El MSX Red Book en Español
El MSX Red Book en Español
El MSX Red Book en Español
(por O.C.R.) Por una persona y editado por otro (usando una PC de la IBM compatible), independientemente. - Todas las pginas tienen un tamao de apuro de 64 rayado. Se justific que la anchura simplifica modificaciones futuras, sin embargo ninguna lnea es ms larga que 80 columnas. - Este libro slo encubre a MSX estndar. La entrada BIOS apunta de 0000H para 01B5H debera ser usado en lugar de las llamadas entradas descritas en el libro, porque otras mquinas (MSX2, MSX2 +, interrogacin del turbo MSX y hechos a la medida) tienen colocaciones diferentes para las rutinas. El uso de rutina interna BIOS dirige la palabra a es responsable de muchos programas slo corrida en MSX. - Algn presente de errores en el libro original fuera fijo, aunque fue probado para conservarlo tan inalterado como posible. Todos los nmeros de la pgina hacen juego con los originales, exceptan errores no descubiertos ya presente en el original. - La mayora de figuras fueron modificated debido a la naturaleza nica en texto de este archivo. El conjunto de caracteres usado durante edicin fue la PC Internacional de la IBM un. Los siguientes personajes especiales fueron usados y deberan variarse para los correspondientes de otros conjuntos de caracteres: + --- + La Libra Del Marco: Los personajes: Micro: +- + +
3. El Generador En Buen Estado Programable........... 21 4. ROM BIOS............................... 26 5. El BASIC ROM Interpreter.................. 89 6. La memoria Map............................. 208 7. Los Programas De Cdigo De La Mquina.................. 240 El Derecho De Autor De Contenidos 1985 El Software Avalon Iver Lane, Cowley, Middx, UB8 2JD MSX es una marca registrada de Microsoft Corp. Z80 es una marca registrada de Zilog Corp. La ACADEMIA es marca registrada de Alfred.
La INTRODUCCIN Las metas Este libro se trata de computadoras MSX y cmo operan. Para razones tcnico y comercial MSX los fabricantes de la computadora slo hacen disponible una cantidad limitada de informacin para el usuario final acerca del diseo de sus mquinas. Usualmente sta ser una descripcin medianamente detallada de Microsoft MSX BASIC conjuntamente con un contorno ancho del hardware de sistema. Mientras este nivel de documentacin es adecuado para el usuario informal inevitablemente probar limitar para cualquiera comprometido en ms programacin sofisticada. La meta de este libro debe proveer una descripcin del hardware estndar MSX y el software en un nivel de detalle lo suficiente como para satisfacer tan ms demandando de usuarios, el programador de cdigo de la mquina. No es un curso introductorio en programar y est necesariamente de una naturaleza ms bien tcnica. Est asumido que usted ya posee, o tiene la intencin de adquirir por otra manera, una comprensin del Z80 Microprocessor en el nivel de cdigo de la mquina. Como hay tantos libros generales de propsito ya en la existencia acerca del Z80 que cualquier descripcin de sus caractersticas simplemente duplicara ampliamente informacin disponible. La organizacin El MSX Standard especifica lo siguiente como los componentes funcionales principales en cualquier computadora MSX: (1) Zilog Z80 Microprocessor (2) Intel 8255 Interface Perifrico Programable (3) Tejas 9929 El De Vdeo Display Processor (4) General Instrumente 8910 Generator Atinado Programable (5) 32 KB MSX BASIC ROM (6) 8 el KB GOLPEAN DURAMENTE mnimo Aunque hay obviamente unos un montn de componentes adicionales involucrados en el diseo de una computadora MSX son todos poco programables en pequea escala, y por consiguiente "invisible" para el usuario. Los fabricantes generalmente tienen libertad considerable en la seleccin de estos componentes en pequea escala. Los componentes programables no pueden ser variados y por consiguiente todas las mquinas MSX son idnticas hasta donde el programador est afectado. Divide en captulos 1, 2 y 3 describen la operacin del Interface Perifrico Programable, el De
Vdeo Display Processor y Generator Atinado Programable respectivamente. Estos tres dispositivos -1La INTRODUCCIN
Provea la interfaz entre el Z80 y el hardware perifrico en una mquina estndar MSX. Todo ocupan colocaciones en el Z80 yo / O (la entrada /salida) Bus. Divida en captulos 4 cubiertas el software contenido en la primera parte divida del MSX ROM. Este captulo del ROM est preocupado con controlar el hardware de la mquina en el nivel fino de detalle y es conocido como los ROM BIOS (el Sistema Bsico de Salida Input). Est estructurado en tal muy ese la mayor parte de las funciones que un programador de cdigo de la mquina precisa, como teclado y conductores de vdeo, est fcilmente disponible. Captulo 5 describe el software contenido en el resto del ROM, el Microsoft MSX BASIC Interpreter. Aunque ste es mayormente un programa conducido en texto, y consecuentemente de menos uso para el programador, un examen cercano revele muchas proposiciones no documentadas por fabricantes. Captulo 6 est afectado con la organizacin de memoria de sistema. La atencin particular es pagada al Workspace Area, eso secciona de RAM de F380H para FFFFH, como esto es utilizado como un bloc para apuntes por los BIOS y el BASIC Interpreter y contiene muy informacin de uso para cualquier programa de aplicacin. Captulo 7 da algunos ejemplos de programas de cdigo de la mquina que hacen uso de caractersticas ROM para minimizar disea esfuerzo. Se cree que este libro contiene defectos de cero, si usted sabe que de otra manera el autor tendra mucho gusto en escuchar de usted. Este libro est dedicado al Nightmare Andante.
El 8255 PPI es un propsito general paralelamente la interfaz que el dispositivo configur como tres ocho puertos de datos mordidos, llam A, B y C, y un puerto de modo. Se aparece ante el Z80 como cuatro que yo / la O exporto a travs de cul el teclado, la memoria cambiando hardware, el motor del casete, la salida del casete, el Caps Lock DIRIGIDO y la salida audia Click Crucial puede controlarse. Una vez que el PPI ha sido inicializado gane acceso a para un pedazo particular de hardware justamente involucra escribir para o leer lo pertinente yo el puerto de la / O.
PPI Exporte UNO (yo / la O Exporto a A8H) 76543210 + Pagine 3 Pgina 2 Pgina 1 Pgina 0 PSLOT# PSLOT# PSLOT# PSLOT C000-FFFF 8000-BFFF 4000-7FFF 0000-3FFF + Figura 1: El Registro Primario De La Ranura Esta terminal de salida, conocido como el Slot Primario Register en la terminologa MSX, se usa para controlar la memoria cambiando hardware. El Z80 Microprocessor slo puede ganar acceso a 64 el KB de memoria directamente. Esta limitacin es actualmente supuesto tan tambin restrictiva y varias de los mtodos personales ms nuevos de la planilla de computadoras para vencerla. Las mquinas MSX pueden tener dispositivos mltiples de memoria en la direccin del mismo y el Z80 puede cambiar de decisin en cualesquier de ellos segn se requiera. El espacio de la direccin del procesador es apreciado como ser duplicado "lateralmente" en cuatro reas 64 separadas de KB, llamado Slots Primario 0 para 3, cada uno del cual recibe su propia ranura seal selecta a lo largo de las seales normales del autobs Z80. Los contenidos del Primary Slot Register determinan cul ranura seal selecta es activa y por consiguiente cul el Primario Slot es seleccionado. Para aumentar flexibilidad cada uno "que pgina" de 16 KBES del espacio de la direccin Z80 puede ser seleccionado de un Slot Primario diferente. Como se muestra en Figure 1 dos aicos del Primary Slot Register estn obligados a definir el nmero Primario Slot para cada pgina. La primera operacin realizada por el MSX ROM en. El Slot Primario Register est luego listo a fin de que las ranuras pertinentes son seleccionadas as haciendo la RAM permanentemente disponible. La configuracin de memoria de cualquier mquina MSX puede ser
Decidido exhibiendo al Primario Slot Register sedimentndose con la declaracin de BASIC: ESCRIBA EN LETRAS DE IMPRENTA a RIGHT$ ("0000000" N$ (INP (y HA8)), 8) Por poner un ejemplo "10100000" se produciran en una Toshiba HX10 donde las pginas 3 y 2 (la RAM) que ambos vengan de Primario Slot 2 y pgina 1 y 0 (el MSX ROM) del Primario Slot 0. El MSX ROM siempre debe ser colocado en el Primario Slot 0 por un fabricante como sta sea la ranura seleccionada por el hardware en energizar. Otros dispositivos de memoria, otra RAM y cualquier ROM adicional, pueden ser colocados en cualquier ranura por un fabricante. Una mquina tpica UK tendr a un Slot Primario conteniendo al MSX ROM, un conteniendo 64 que el KB de RAM y dos ranuras sac para los conectores externos. La mayora de mquinas japonesas llevan puestas un conector de tipo del cartucho cada uno de estas ranuras externas pero las mquinas UK usualmente tienen un conector del cartucho y un conector IDC. Los extensores La memoria de sistema puede ser incrementada hasta un mximum terico de diecisis reas de 64 KBES por interfaces utilizadoras del extensor. Unos tapones del extensor en cualquier Primary Hacen Una Ranura En proveer cuatro Ranuras de 64 KBES de Secundario, numeraron 0 para 3, en lugar de una primaria. Cada extensor tiene su propio hardware local, llamado un Secundario Slot Register, para seleccionar cul del Slots Secundario debera aparecer en el Slot Primario. Como antes de que pginas puede ser seleccionado de Slots Secundario diferente. 76543210 + Pagine 3 Pgina 2 Pgina 1 Pgina 0 SSLOT# SSLOT# SSLOT# SSLOT + Figura 2: El Registro Secundario De La Ranura Cada Slot Secundario Register, al realmente ser una lectura de ocho bits / escriba picaporte, est hecho en aparecer como posicin de memoria FFFFH de su Slot Primario por el hardware del extensor. Para ganar acceso a esta posicin en un extensor particular usualmente hay que primero cambiar pgina 3 (C000H para FFFFH) de ese Slot Primario en el espacio de la direccin del procesador. El Slot Secundario Register luego puede ser modificado y, si la pgina necesaria, 3 restituy para su Slot Primario original sedimentndose. Ganar acceso a la memoria en extensores puede convertirse ms bien un proceso con muchas curvas. Es aparente que all debe ser alguna forma de determinar si un Slot Primario contiene RAM ordinaria o un extensor adentro
Haga el pedido ganar acceso a eso correctamente. Para lograr esto son los Registros Secundarios Slot diseados para invertir sus contenidos cundo la espalda leda. Durante el posicin memoria bsqueda RAM que se energiza arriba FFFFH de cada Slot Primario es examinado para determinar si se comporta normalmente o si la ranura contiene un extensor. Los resultados de estas pruebas son almacenados en el mapa del recurso de sistema Workspace Area EXPTBL para el posterior uso. Esto est hecho en que se energiza arriba por la dificultad en funcionar prueba cuando el Secondary Slot Registers realmente contenga viva colocaciones. El cambiar memorias es obviamente un rea demandando de ms cautela, particularmente con los mecanismos jerrquicos necesitados para monitorear extensores. El cuidado debe ser tomado para evitar alternacin fuera de la pgina en la cual un programa est marchando o, si estuviera siendo usado, la pgina conteniendo la pila. Hay un nmero de rutinas estndar disponibles para el programador de cdigo de la mquina en el captulo BIOS del MSX ROM para simplificar el proceso. El BASIC Interpreter mismo tiene cuatro mtodos de ROMs de la extensin que gana acceso a. La primera parte tres de estos es pues el uso con ROMs de cdigo de la mquina coloc en pgina 1 (4000H para 7FFFH), son: (1) Se Abrocha (El Captulo 6). (2) La "llamada" declaracin (el Captulo 5). Los nombres (el Captulo 5) (3) Adicionales del dispositivo. El BASIC Interpreter tambin puede ejecutar un programa de BASIC ROM detectado en pgina 2 (8000H para BFFFH) durante la bsqueda que se impulsa arriba ROM. Lo que no puede hacer el BASIC Interpreter es usar cualquier RAM escondida detrs de otros dispositivos de memoria. Esta limitacin es una reflexin de la dificultad en convertir un programa establecido a tomar ventaja de ms nuevo, ms mquinas complicadas. Una situacin similar existe con la versin de BASIC Microsoft disponible en la PC de la IBM. Fuera de un espacio de memoria de 1 MEGABYTES slo 64 para los que el KB puede servir programan almacenamiento. PPI Exporte a B (yo / la O Exporto a A9H) 76543210 + Las Entradas De La Columna Del Teclado + Figura 3 Esta terminal de entrada se usa para leer los ocho aicos de datos de la columna de la fila actualmente seleccionada del teclado. El teclado MSX es un software escudriado once la fila por ocho la matriz de la columna de interruptores normalmente abiertos. La corriente que las mquinas usualmente slo tienen teclea cero de filas para ocho. La conversin de depresiones cruciales
En los cdigos de caracteres es realizado por el MSX ROM interrumpa al manipulador, este proceso est descrito en Chapter 4. PPI Exporte a C (yo / la O Exporto a AAH) 76543210 + Afine Fila Del Teclado De La Gorra Cas Selecta El chasquido LLEVADO Fuera De Motor + Figura 4 Esta terminal de salida controla una variedad de funciones. Los aicos Select Row cuatro Keyboard seleccionan cul de las once filas del teclado, numeradas de 0 para 10, debe ser ledo adentro por B PPI Port. El bit Cas Motor determina la condicin del relevador del motor del casete: 0 = Adelante, 1 = Off. El bit Cas Out es filtrado y estilizado antes de ser llevado al conector de ESTRPITO del casete como la seal MIC. Toda generacin de tono del casete es realizada por software. El Cap que LED mordi determina que la condicin del Caps Lock LLEV LA DELANTERA: 0 = Adelante, 1 = Off. La salida Crucial Click est estilizada y mixta con la salida audia del Generator Atinado Programable. Para realmente generar un estrecho que este bit debera ser lanzado de vez en cuando. Noto que hay rutinas estndar en los ROM BIOS para ganar acceso a todas las funciones disponibles con este puerto. Estos deberan ser usados preferentemente a la manipulacin directa del hardware si es posible. PPI Mode Port (yo / la O Exporto a ABH) 76543210 + 1 A Y CACB Y CBC El Modo De Modo Dir Dir + Figura 5: PPI Mode Selection Este puerto se usa para colocar el modo operativo del PPI. Como el hardware MSX es diseado para operar en un detalle
-6-
La configuracin slo este puerto no debera ser modificada bajo cualquier condiciones. Los detalles son dados para la plenitud slo. El bit 7 debe tener 1 aos de edad para alterar el modo PPI, cuando es 0 el PPI realiza la sola funcin mordida del set /reanudacin exteriorizada en Figure 6. La A y los aicos C Mode determinan el modo operativo de Babor UNO y el cuatro bits superior slo de C De Babor: 00 = el Normal Mode (MSX), 01 = Strobed Mode, 10 = el Bidireccional Mode El modo de la A Dir determina la direccin de Babor UNO: 0 = Devuelven (MSX), 1 = Input. La C Dir mordi determina la direccin del cuatro bits superior slo de C De Babor: 0 = Devuelven (MSX), 1 = Input. La B y los aicos C Mode determinan el modo operativo de B De Babor y el cuatro bits inferior slo de C De Babor: 0 = el Normal Mode (MSX), 1 = Strobed Mode. La B Dir mordi determina la direccin de B De Babor:0 = devuelven, 1 = Input (MSX). La C Dir mordi determina la direccin del cuatro bits inferior slo de C De Babor: 0 = Devuelven (MSX), 1 = Input
El PPI Mode Port puede estar acostumbrado directamente colocar o volver a arrancar cualquier bit de C De Babor cundo bit 7 es 0. El Number Mordido, de 0 para 7, determina cul bit debe ser afectado. Su valor nuevo est resuelto por el bit SetReset: 0 = Reanudan, 1 = Set. La ventaja de este modo es que una sola salida puede estar con holgura modificada. Por poner un ejemplo el Caps Lock DIRIGIDO puede ser animado con la declaracin de BASIC OUT y HAB, 12 y completamente con la declaracin OUT y HAB, 13.
-7-
2. VIDEOGRABE PROCESADOR DE DESPLIEGUE Lo 9929 VDP contiene todo el sistema de circuitos necesario para generar el despliegue de vdeo. Se aparece ante el Z80 como dos que yo los puertos de la / O llam la Data Exporta y el Command Port. Aunque el VDP tiene su propio 16 KB de VRAM (la RAM De Vdeo), los contenidos de los cuales define la imagen de la pantalla, sta no puede ser en seguida a la que se gan acceso por el Z80. En lugar de eso debe usar lo dos yo puertos de la / O para modificar al VRAM y colocar al VDP diversos manejando condiciones. Datos Port (yo / la O Port 98H) La Data Port est acostumbrada a leer o escribir solos bytes para el VRAM. El VDP posee un registro interno de la direccin apuntando hacia una posicin en el VRAM. Leer a la Data Port introducir en la computadora el byte de esta posicin VRAM mientras escribir a la Data Port almacenar un byte all. Despus de una lectura o escriba que el registro de la direccin es automticamente incrementado para apuntar para la siguiente posicin VRAM. Los bytes secuenciales pueden ser a los que se gan acceso simplemente por lecturas continuas o escribe a la Data Port. La orden Port (yo / la O Port 99H) El Command Port sirve para tres propsitos: (1) To establezca el registro de la direccin Data Port. (2) To lea al VDP Status Register. (3) To escriba a uno del VDP Mode Registers. La direccin Register El registro de la direccin Data Port debe ser establecido de diferentes maneras segn que la subsiguiente va de entrada debe ser una lectura o uno escriba. El registro de la direccin puede estar colocado para cualquier valor de 0000H para 3FFFH por primera escritura el LSB (Byte Significativo Mnimo) y luego el MSB (La Mayora De Byte Significativo) para el Command Port. Los aicos 6 y 7 del MSB son usados por el VDP a determinar si el registro de la direccin est siendo colocado arriba para subsiguientes lecturas o escribe como sigue: + Xxxxxxxx 00xxxxxx ledo + + Escriba a xxxxxxxx 01xxxxxx + Figura 7: VDP Dirija La Palabra A Setup Es importante que ningn otras vas de entrada hagan al VDP en medio de escribir al LSB y el MSB como sta contrariar su -8-
La sincronizacin. El MSX ROM interrumpe manipulador continuamente lee al VDP Status Register como una tarea de fondo tan interrumpe debera estar discapacitado tan necesario. VDP Status Register Leer al Command Port introducir en la computadora los contenidos del VDP Status Register. Esto contiene banderas diversas como debajo: 76543210 + F 5S C Fifth Sprite Number La Bandera De La Bandera De La Bandera +-------------------------------------- + Figura 8: VDP Status Register Los Quintos aicos Sprite Number contienen el nmero (0 para 31) del bloque de objetos movibles incentivando al Quinto Sprite Flag. El Coincidence Flag es normalmente 0 sino que est listo para 1 si cualquier bloques de objetos movibles tienen a uno o ms pixels imbricados. Leer al Status Register volver a arrancar esta bandera para uno 0. Noto que la coincidencia es slo comprobada como cada pixel sea generado durante un marco de vdeo, en una mquina UK sta es cada 20 seora Si rpido el traslado cada uno el que los bloques de objetos movibles pasan encima en medio no inspecciona luego coincidencia estar enlosada. El Quinto Sprite Flag es normalmente 0 sino que est listo para 1 cuando hay ms que cuatro bloques de objetos movibles en cualquier lnea del pixel. Leer al Status Register volver a arrancar esta bandera para uno 0. El Frame Flag es normalmente 0 sino que est listo para uno 1 al final de la ltima lnea activa del marco de vdeo. Para mquinas UK con una tasa del marco 50 Hz esto ocurrir cada 20 Seora Reading que el registro Status volver a arrancar esta bandera para uno 0. Hay una seal asociada de salida del VDP que genera Z80 interrumpe en la misma tasa, esto conduce al MSX ROM interrumpe manipulador. VDP Mode Se Registra El VDP tiene ocho registros que se escriben slo, numerado 0 para 7, cul controla su operacin general. Un registro particular es determinado por primero escribir un byte de datos luego un byte de seleccin de registro para el Command Port. El byte de seleccin de registro contiene el nmero de registro en los aicos tres inferiores: El 10000RRR. Como el Mode Se Registra es que se escribe slo, y no puede ser ledo, el MSX ROM mantiene una copia conforme de los ocho registros en el Workspace Area de RAM (el Captulo 6). Usando las rutinas del estndar MSX ROM para VDP las funciones asegura que esta imagen de registro estn correctamente actualizadas.
El Registro De Modo 0 76543210 + 0 0 0 0 0 0 M3 EV +------------------------------- + Figura 9 El VDP Externo que el bit determina ya sea VDP externo introducen en la computadora debe ser facultado o discapacitado: 0 = Lisiaron, 1 = Enabled. El bit M3 es uno de los tres aicos de seleccin de modo VDP, sede Mode Register 1. El Registro De Modo 1 76543210 + 4/16K Blank IE M1 M2 0 Size Mag +------------------------------------------------------- + Figura 10 La Magnificacin que el bit determina ya sea duendes sern normales o doblados en el tamao: 0 = Normal, 1 = Doubled. El Tamao que el bit determina ya sea cada patrn de bloque de objetos movibles sern aicos del 8x8 o aicos 16x16: 0=8x8, 1=16x16. El M1 y aicos M2 determinan al VDP manejando modo en conjuncin con el bit M3 de Mode Register 0: M1 M2 M3 0 0 0 32x24 Text Mode 0 0 Mode 1 Graphics 0 1 Mode 0 Multicolour 1 0 0 40x24 Text Mode El Interrupt que Enable mordi posibilita o lisia lo interrumpe seal de salida del VDP: 0 = Lisian, 1 = Enable. El bit En Blanco se usa para posibilitar o lisiar el despliegue de vdeo entero: 0 = Lisian, 1 = Enable. Cuando el despliegue es al que se gan limpiamente ser el mismo color como el borde. El bit del 4/16K altera al VDP VRAM dirigiendo caractersticas a satisfacer ya sea 4 KB o 16 patatas fritas de KB: 0=4 KB, 1=16 KB.
El Registro De Modo 2 76543210 + 0 0 0 0 Name Posponen Base + Figura 11 Modo Register 2 define el discurso de puesta en marcha del Name Table en el VDP VRAM. Los cuatro aicos disponibles slo le especifican colocacin 00BB BB00 0000 0000 de la direccin completa as es que registran contenidos de 0FH resultaran en un discurso bajo de 3C00H. El Registro De Modo 3 76543210 + La Base De La Mesa De Color + Figura 12 Modo Register 3 define el discurso de puesta en marcha del Colour Table en el VDP VRAM. Los ocho aicos disponibles slo le especifican colocacin 00BB BBBB BB00 0000 de la direccin completa as es que registran contenidos de FFH resultaran en un discurso bajo de 3FC0H. En bit nico Mode Graphics 7 es efectivo as ofreciendo una base de 0000H o 2000H. Los aicos 0 para 6 deben tener 1 aos de edad. El Registro De Modo 4 76543210 + 0 0 0 0 0 Character Pattern + Figura 13 Modo Register 4 define el discurso de puesta en marcha del Character Pattern Table en el VDP VRAM. Los tres aicos disponibles slo le especifican colocacin 00BB B000 0000 0000 de la direccin completa as es que registran contenidos de 07H resultaran en un discurso bajo de 3800H. En bit nico Mode Graphics 2 es efectivo as ofreciendo una base de 0000H o 2000H. Los aicos 0 y 1 deben tener 1 aos de edad.
- 11 -
El Registro De Modo 5 76543210 + 0 Sprite Atribuyen base + Figura 14 Modo Register 5 define el discurso de puesta en marcha del Sprite Attribute Table en el VDP VRAM. Los siete aicos disponibles slo le especifican colocacin 00BB BBBB B000 0000 de la direccin completa as es que registran contenidos de 7FH resultaran en un discurso bajo de 3F80H. El Registro De Modo 6 76543210 + 0 0 0 0 0 Sprite Pattern + Figura 15 Modo Register 6 define el discurso de puesta en marcha del Sprite Pattern Table en el VDP VRAM. Los tres aicos disponibles slo le especifican colocacin 00BB B000 0000 0000 de la direccin completa as es que registran contenidos de 07H resultaran en un discurso bajo de 3800H. El Registro De Modo 7 76543210 + El Color Del Texto 1 El Color Fronterizo + Figura 16 Los aicos Fronterizos Colour determinan el color de la regin rodeando el contorno de vdeo activo en todos los cuatro modos VDP. Tambin determinan el color de todos los 0 pixels en la pantalla en 40x24 Text Mode. Noto que el borde que la regin realmente extiende a travs de la pantalla entera sino slo se volver visible en el rea activo si el pixel que yace encima de es transparente.
- 12 -
El Text Colour 1 aicos determina el color de todos los 1 pixels en 40x24 Text Mode. No tienen efecto en los otros tres modos dnde la flexibilidad mayor es provista a travs del uso del Colour Table. Los cdigos de color VDP son: 0 Transparente 4 Dark Azulan 8 Rojos 12 Verdeoscuros 1 Purple 13 Rojo Fuerte 9 Azul Claro 5 Negro 2 Verdean 6 El Moreno Red 10 Amarillos 14 Gris 3 El Ligero Green 7 Sky Blue 11 White 15 Amarillo Claro
La pantalla Modes El VDP tiene cuatro modos operativos, cada un oferente uno set ligeramente diferente de capacidades. Generalmente hablando, como la resolucin se aumenta el precio a estar pagado en el tamao VRAM y la complejidad modernizante tambin aumentan. En una aplicacin dedicada estos asociaron hardware y las expensas del software son consideraciones importantes. Para una mquina MSX son irrelevantes, por consiguiente parece una piedad que un intento mayor no estaba hecho para estandarizar en un modo particular. El Graphics Mode es capaz adecuadamente realizando todas las funciones de los otros modos con slo reservaciones menores. Una dificultad agregada en usar al VDP se levanta porque la concesin insuficiente estaba hecha en su diseo para la sobre-tomografa usada por la mayora de televisiones. La prdida resultante de personajes en los bordes de la pantalla ha forzado todo el software relacionado en vdeo MSX en basarse en tamaos peculiares de la pantalla. Las mquinas UK normalmente usan slo a los central treinta y siete personajes disponibles en 40x24 Text Mode. El nipn labra a mquina, con salidas del vdeo NTSC (el Nacional Television Standards Committee), use los smbolos treinta y nueve centrales. El elemento central en el VDP, de punto de vista del programador, est el Name Table. sta es una lista sencilla de solo byte que los cdigos de caracteres sostuvieron en VRAM. Tiene 960 bytes de largo en 40x24 Text, Mode 768 bytes de largo en 32x24 Text Mode, Graphics Mode y Multicolour Mode. Cada colocacin en el Name Table es propia de una posicin particular en la pantalla. Durante un marco de vdeo el VDP secuencialmente leer cada cdigo de caracteres del Name Table, comenzando en la base. Como a cada cdigo de caracteres le es ledo el patrn correspondiente del 8x8 de pixels es mirado arriba en el Character Pattern Table y exhibido en la pantalla. La apariencia de la pantalla as puede ser modificada por tampoco cambiar los cdigos de caracteres en el Name Table o los patrones del pixel en el Character Pattern Table. Noto que el VDP no tiene facilidad del cursor del hardware, si uno es requerido que debe ser software generado.
40x24 Text Mode El Name Table ocupa 960 bytes de VRAM de 0000H para 03BFH: 0123456789012345678901234567890123456789 0000H + --------------------------------------- + 0 0028H ++++++++++++++++++++++++++++++++++++++++ 1 0050H ++++++++++++++++++++++++++++++++++++++++ 2 0078H ++++++++++++++++++++++++++++++++++++++++ 3 00A0H ++++++++++++++++++++++++++++++++++++++++ 4 00C8H ++++++++++++++++++++++++++++++++++++++++ 5 00F0H ++++++++++++++++++++++++++++++++++++++++ 6 0118H ++++++++++++++++++++++++++++++++++++++++ 7 0140H ++++++++++++++++++++++++++++++++++++++++ 8 0168H ++++++++++++++++++++++++++++++++++++++++ 9 0190H ++++++++++++++++++++++++++++++++++++++++ 10 01B8H ++++++++++++++++++++++++++++++++++++++++ 11 01E0H ++++++++++++++++++++++++++++++++++++++++ 12 0208H ++++++++++++++++++++++++++++++++++++++++ 13 0230H ++++++++++++++++++++++++++++++++++++++++ 14 0258H ++++++++++++++++++++++++++++++++++++++++ 15 0280H ++++++++++++++++++++++++++++++++++++++++ 16 02A8H ++++++++++++++++++++++++++++++++++++++++ 17 02D0H ++++++++++++++++++++++++++++++++++++++++ 18 02F8H ++++++++++++++++++++++++++++++++++++++++ 19 0320H ++++++++++++++++++++++++++++++++++++++++ 20 0348H ++++++++++++++++++++++++++++++++++++++++ 21 0370H ++++++++++++++++++++++++++++++++++++++++ 22 0398H ++++++++++++++++++++++++++++++++++++++++ 23 + 0123456789012345678901234567890123456789 Figura 17: 40x24 Name Table El patrn Table ocupa 2 KB de VRAM de 0800H para 0FFFH. Cada uno que bloque de ocho bytes contiene el pixel modela para un cdigo de caracteres: + 0 0 1 0 0 0 0 0 Byte 0 0 1 0 1 0 0 0 0 Byte 1 1 0 0 0 1 0 0 0 Byte 2 1 0 0 0 1 0 0 0 Byte 3 1 1 1 1 1 0 0 0 Byte 4 1 0 0 0 1 0 0 0 Byte 5 1 0 0 0 1 0 0 0 Byte 6 0 0 0 0 0 0 0 0 Byte 7 +--------------- + Figura 18: El carcter Pattern Block (No. 65 mostrado ' UNO ') El primer bloque contiene el patrn para el cdigo de caracteres 0, el segundo el patrn para el cdigo de caracteres 1 etctera para el cdigo de caracteres 255. Note eso slo el leftmost seis pixels es de hecho exhibido en este modo. Los colores de los 0 y 1 pixels en este modo estn definidos por VDP Mode Register 7, inicialmente son azules y blancos. - 14 2. VIDEOGRABE PROCESADOR DE DESPLIEGUE 32x24 Text Mode
El Name Table ocupa 768 bytes de VRAM de 1800H para 1AFFH. Como en 40x24 Text la operacin normal Mode involucra a colocar cdigos de caracteres en la colocacin requerida en la mesa. El "VPOKE" declaracin puede estar acostumbrado a lograr familiaridad con el plan de la pantalla: 01234567890123456789012345678901 1800H + ------------------------------- + 0 1820H ++++++++++++++++++++++++++++++++ 1 1840H ++++++++++++++++++++++++++++++++ 2 1860H ++++++++++++++++++++++++++++++++ 3 1880H ++++++++++++++++++++++++++++++++ 4 18A0H ++++++++++++++++++++++++++++++++ 5 18C0H ++++++++++++++++++++++++++++++++ 6 18E0H ++++++++++++++++++++++++++++++++ 7 1900H ++++++++++++++++++++++++++++++++ 8 1920H ++++++++++++++++++++++++++++++++ 9 1940H ++++++++++++++++++++++++++++++++ 10 1960H ++++++++++++++++++++++++++++++++ 11 1980H ++++++++++++++++++++++++++++++++ 12 19A0H ++++++++++++++++++++++++++++++++ 13 19C0H ++++++++++++++++++++++++++++++++ 14 19E0H ++++++++++++++++++++++++++++++++ 15 1A00H ++++++++++++++++++++++++++++++++ 16 1A20H ++++++++++++++++++++++++++++++++ 17 1A40H ++++++++++++++++++++++++++++++++ 18 1A60H ++++++++++++++++++++++++++++++++ 19 1A80H ++++++++++++++++++++++++++++++++ 20 1AA0H ++++++++++++++++++++++++++++++++ 21 1AC0H ++++++++++++++++++++++++++++++++ 22 1AE0H ++++++++++++++++++++++++++++++++ 23 + 01234567890123456789012345678901 Figura 19: 32x24 Name Table El Character Pattern Table ocupa 2 KB de VRAM de 0000H para 07FFH. Su estructura es lo mismo como en 40x24 Text Mode, todos los ocho pixels de un 8x8 el patrn son ahora exhibido. El color fronterizo est definido por VDP Mode Register 7 y es inicialmente azul. Una mesa adicional, el Colour Table, determina el color de los 0 y 1 pixels. Esto ocupa treinta y dos bytes de VRAM de 2000H para 201FH. Cada entrada en el Colour Table define los 0 y 1 colores pixel para un grupo de ocho cdigos de caracteres, mientras inferior cuatro bits definiendo el color 0 pixel, cuatro bits superior el color 1 pixel. La primera entrada en la mesa define los colores para los cdigos de caracteres 0 para 7, el segundo para los cdigos de caracteres 8 para 15 etctera para treinta y dos entradas. El MSX ROM inicializa todas las entradas para el mismo valor, azul y el blanco, y no provee instalaciones para individuales cambiantes. - 15 2. VIDEOGRABE PROCESADOR DE DESPLIEGUE Grfico Mode
El Name Table ocupa 768 bytes de VRAM de 1800H para 1AFFH, as como en 32x24 Text Mode. La mesa es en el que se puso las iniciales con la secuencia de cdigo de caracteres 0 para 255 repetido tres veces y se queda luego sin tocar, en este modo que es el Character Pattern Table que es modificado durante la operacin normal. El Character Pattern Table ocupa 6 KB de VRAM de 0000H para 17FFH. Mientras su estructura es lo mismo tan en los modos del texto que no contiene un conjunto de caracteres sino es inicializado para todos los 0 pixels. La primera parte 2 el KB del Character Pattern Table es tratada segn los cdigos de caracteres de la primera parte en tercer lugar del Name Table, el segundo 2 KB por la tercera parte central del Name Table y el ltimo 2 KB por la tercera parte final del Name Table. Por el patrn secuencial en el Name Table el Character entero Pattern Table es ledo fuera de linearly durante un marco de vdeo. Colocando un punto en que la pantalla implica resolucin donde el bit correspondiente est en el Character Pattern Table y encendindolos. Para que un programa de BASIC convierta a X, las coordenadas Y para una direccin ven la rutina del estndar MAPXYC en Chapter 4. 01234567890123456789012345678901 0000H + ------------------------------- + 0 0100H ++++++++++++++++++++++++++++++++ 1 0200H ++++++++++++++++++++++++++++++++ 2 0300H ++++++++++++++++++++++++++++++++ 3 0400H ++++++++++++++++++++++++++++++++ 4 0500H ++++++++++++++++++++++++++++++++ 5 0600H ++++++++++++++++++++++++++++++++ 6 0700H ++++++++++++++++++++++++++++++++ 7 0800H ++++++++++++++++++++++++++++++++ 8 0900H ++++++++++++++++++++++++++++++++ 9 0A00H ++++++++++++++++++++++++++++++++ 10 0B00H ++++++++++++++++++++++++++++++++ 11 0C00H ++++++++++++++++++++++++++++++++ 12 0D00H ++++++++++++++++++++++++++++++++ 13 0E00H ++++++++++++++++++++++++++++++++ 14 0F00H ++++++++++++++++++++++++++++++++ 15 1000H ++++++++++++++++++++++++++++++++ 16 1100H ++++++++++++++++++++++++++++++++ 17 1200H ++++++++++++++++++++++++++++++++ 18 1300H ++++++++++++++++++++++++++++++++ 19 1400H ++++++++++++++++++++++++++++++++ 20 1500H ++++++++++++++++++++++++++++++++ 21 1600H ++++++++++++++++++++++++++++++++ 22 1700H ++++++++++++++++++++++++++++++++ 23 + 01234567890123456789012345678901 Figura 20: La Mesa Del Patrn De Carcter De Grficos El color fronterizo est definido por VDP Mode Register 7 y es inicialmente azul. El Colour Table ocupa 6 KB de VRAM de - 16 2. VIDEOGRABE PROCESADOR DE DESPLIEGUE El 2000H para 37FFH. Hay un byte exacto para el byte haciendo mapas del Character Pattern Table para el Colour Table pero, porque lleva un byte entero a definir a lo 0 colores pixel y 1
pixel, hay una resolucin inferior para colores que para pixels. El cuatro bits inferior de una entrada Colour Table define el color de todos los 0 pixels en la correspondiente lnea de ocho pixeles. El cuatro bits superior define el color de lo 1 pixels. El Colour Table es inicializado a fin de que el color 0 pixel y el color 1 pixel son azules para la mesa entera. Porque ambos colores son lo mismo hay que alterar un color cundo un poco es el set en el Character Pattern Table. Mode multicolor El Name Table ocupa 768 bytes de VRAM de 0800H para 0AFFH, la pantalla haciendo mapas es lo mismo como en 32x24 Text Mode. La mesa es en la que se puso las iniciales con el siguiente patrn de cdigo de caracteres: El 00H para 1FH (Repetidas cuatro veces) El 20H para 3FH (Repetidas cuatro veces) El 40H para 5FH (Repetidas cuatro veces) El 60H para 7FH (Repetidas cuatro veces) El 80H para 9FH (Repetidas cuatro veces) A0H para BFH (Repetidas cuatro veces) Al igual que con Graphics Mode ste est simplemente un patrn del "conductor" de cdigo de caracteres, es el Character Pattern Table que es modificado durante la operacin normal. La mesa Character Pattern ocupa 1536 bytes de VRAM de 0000H para 05FFH. Como en los otros modos cada carcter codifican mapas encima de un ocho bloque de byte en el Character Pattern Table. Por la resolucin inferior en este modo slo dos bytes del bloque del patrn son realmente necesarios a definir un patrn del 8x8: + Uno Uno Uno Un Byte B B B 0 El Byte C C C D D D D 1 AB ............... ...... + CD + + Figura 21: El Bloque Multicolor Del Patrn Como puede ser visto de Figure 21 que cada captulo de cuatro bits del bloque de dos bytes contiene un cdigo de color y as define el COLOR de un cuadrante del patrn 8x8 pixel. A fin de que los bytes ocho enteros del patrn se bloquean puede ser utilizado un cdigo de caracteres dado usar un el captulo dos diferente de byte dependiendo - 17 2. VIDEOGRABE PROCESADOR DE DESPLIEGUE En la posicin de la pantalla del cdigo de caracteres (o sea su colocacin en el Name Table): Videograbe fila 0, 4, 8, 12, 16, 20 bytes Uses 0 y 1 Videograbe fila 1, 5, 9, 13, 17, 21 bytes Uses 2 y 3 Videograbe fila 2, 6, 10, 14, 18, 22 bytes Uses 4 y 5
Videograbe fila 3, 7, 11, 15, 19, 23 bytes Uses 6 y 7 Cuando el Name Table se llena del conductor especial secuencia de cdigos de caracteres exteriorizado por encima del Character Pattern Table ser ledo fuera de linearly durante un marco de vdeo: 01234567890123456789012345678901 0000H + ------------------------------- + 0 0002H ++++++++++++++++++++++++++++++++ 1 0004H ++++++++++++++++++++++++++++++++ 2 0006H ++++++++++++++++++++++++++++++++ 3 0100H ++++++++++++++++++++++++++++++++ 4 0102H ++++++++++++++++++++++++++++++++ 5 0104H ++++++++++++++++++++++++++++++++ 6 0106H ++++++++++++++++++++++++++++++++ 7 0200H ++++++++++++++++++++++++++++++++ 8 0202H ++++++++++++++++++++++++++++++++ 9 0204H ++++++++++++++++++++++++++++++++ 10 0206H ++++++++++++++++++++++++++++++++ 11 0300H ++++++++++++++++++++++++++++++++ 12 0302H ++++++++++++++++++++++++++++++++ 13 0304H ++++++++++++++++++++++++++++++++ 14 0306H ++++++++++++++++++++++++++++++++ 15 0400H ++++++++++++++++++++++++++++++++ 16 0402H ++++++++++++++++++++++++++++++++ 17 0404H ++++++++++++++++++++++++++++++++ 18 0406H ++++++++++++++++++++++++++++++++ 19 0500H ++++++++++++++++++++++++++++++++ 20 0502H ++++++++++++++++++++++++++++++++ 21 0504H ++++++++++++++++++++++++++++++++ 22 0506H ++++++++++++++++++++++++++++++++ 23 + 01234567890123456789012345678901 Figura 22: La Mesa Multicolora Del Patrn De Carcter El color fronterizo est definido por VDP Mode Register 7 y es inicialmente azul. No hay el separado Colour Table como los colores estn definidos directamente por los contenidos del Character Pattern Table, ste se llena inicialmente de azul. Los bloques de objetos movibles El VDP puede controlar treinta y dos bloques de objetos movibles en todos los modos excepto 40X24 Text Mode. Su tratamiento es idntico en todos los modos e independiente de cualquier actividad orientada en carcter. El Sprite Attribute Table ocupa 128 bytes de VRAM de - 18 2. VIDEOGRABE PROCESADOR DE DESPLIEGUE
El 1B00H para 1B7FH. La mesa contiene treinta y dos cuatro bloques de byte, uno para cada bloque de objetos movibles. El primer bloque controla bloque de objetos movibles 0 (el bloque de
objetos movibles "mximo"), el segundo controla bloque de objetos movibles 1 etctera para el bloque de objetos movibles 31. El formato de cada bloque est como debajo:
76543210 + El Byte Vertical De Colocacin 0 + El Byte Horizontal De Colocacin 1 + El Byte De Nmero Del Patrn 2 + EC 0 0 0 Colour Codifican a Byte 3 + Figura 23: El Bloque De Atributo De Bloque De Objetos Movibles
El byte 0 especifica la coordenada vertical (Y) del pixel dejado en parte superior del bloque de objetos movibles. El sistema de coordenadas marcha de - 1 (FFH) para la lnea mxima del pixel en la pantalla hasta 190 (BEH) para el meollo del asunto. Aprecia menos que - 1 puede estar acostumbrado a deslizar el bloque de objetos movibles en desde lo alto de la pantalla. Los valores exactos necesitados obviamente dependern del tamao del bloque de objetos movibles. Curiosamente no ha habido intento en MSX BASIC para reconciliar este sistema de coordenadas con el rango normal de grficos de Y = 0 para 191. Como una consecuencia un bloque de objetos movibles siempre ser un pixel inferior en la pantalla que el punto grfico equivalente. Noto que el valor coordinado vertical especial de 208 (D0H) coloc en un bloque de atributo de bloque de objetos movibles causar el VDP para ignora todos subsiguientes bloques en el Sprite Attribute Table. De manera impresionante esto quiere decir que cualquier bloques de objetos movibles inferiores desaparecern de la pantalla. El byte 1 especifica la coordenada horizontal (X) del pixel dejado en parte superior del bloque de objetos movibles. El sistema de coordenadas marcha de 0 para el leftmost pixel para 255 (FFH) para lo de la extrema derecha. Como este sistema de coordenadas no provee mecanismo para deslizarse un bloque de objetos movibles en de la izquierda un bit especial en el byte 3 est usado con este propsito, vea debajo. El byte 2 selecciona uno de los doscientos patrones del pedacito de cincuenta y seis 8x8 disponible en el Sprite Pattern Table. Si el bit Size es incrustado en VDP Mode Register 1, entonces resultando en patrones del bit del 16x16 ocupando treinta y dos bytes cada uno, los dos aicos menos significativos del nmero del patrn estn ignorados. As el patrn nmeros 0, 1, 2 y 3 todos seleccionaran patrn nmero 0. En Byte 3 los aicos Code cuatro Colour definen el color de lo 1 pixels en el bloque de objetos movibles los patrones, 0 pixels estn siempre
- 19 2. VIDEOGRABE PROCESADOR DE DESPLIEGUE Transparente. El bit Tempranero Clock es normalmente 0 sino que intercambiarn el bloque de objetos movibles treinta y dos pixels para la izquierda cundo set para 1. Esto est a fin de que los bloques de objetos movibles no pueden ir en disminucin adentro de la izquierda de la
pantalla, all ser coordenadas de repuesto en la direccin horizontal. El Sprite Pattern Table ocupa 2 KB de VRAM de 3800H para 3FFFH. Contiene doscientos patrones cincuenta y seis 8x8 pixel, numerados de 0 para 255. Si el Size mordi en VDP Mode Register 1 es 0, resultante en bloques de objetos movibles del 8x8, entonces luego cada uno que bloque del patrn de bloque de objetos movibles de ocho bytes est estructurado al modo del patrn de carcter se bloquea mostrado en Figure 18. Si el Size mordido tiene 1 aos de edad, resultando en bloques de objetos movibles del 16x16, entonces luego cuatro ocho bloques de byte son necesarios para definir el patrn como debajo: + 8 Bytes Bloque A AC + 8 Bytes B del bloque +--------- BD 8 Bytes C del bloque + 8 Bytes D del bloque + Figura 24: 16x16 Sprite Pattern Block
As como canales en buen estado tres controlantes lo 8910 PSG contienen dos ocho puertos mordidos de datos, llamado UNO y B, a travs del cual interconecta las palancas de control y la entrada del casete. El PSG se aparece ante el Z80 como tres que yo los puertos de la / O le llam el Address Port, la Data Write Port y la Data Port Ledo. La direccin Port (yo / la O exporto a A0H) El PSG contiene diecisis registros internos que completamente definen su operacin. Un registro especfico es seleccionado escribiendo su nmero, de 0 para 15, para este puerto. Una vez que se selecciona, repitieron que las vas de entrada para ese registro pueden estar hechas por los dos puertos de datos. Los datos Escriben A Port (yo / la O exporto a A1H) Este puerto se usa para escribir a cualquier registrador una vez que ha sido seleccionado por el Address Port. Los datos Leen a Port (yo / la O exporto a A2H) Este puerto se usa para leer cualquier registro una vez que ha sido seleccionado por el Address Port. Registra 0 Y 1 76543210 + Canalice Un R0 De Frecuencia (LSB) + La A x x x Channel Frequency R1 (MSB) + Figura 25 Estos dos registros se usan para definir la frecuencia del Tone Electrgeno para A Channel. Las frecuencias variables se producen dividiendo una frecuencia maestra fija con el nmero mantenido en Registers 0 y 1, este nmero puede estar del rango 1 para 4095. Regstrele 0 agarres los aicos menos ocho significativos y Register 1 lo ms significativo cuatro. El PSG divide una la frecuencia 1.7897725 externa MHz a las diecisis para producir una frecuencia maestra Electrgena Tone de 111,861 Hz. La salida del Tone Generator
Por consiguiente puede extenderse de 111,861 Hz (divida a las 1) hasta 27.3 Hz (divida a las 4095). Por poner un ejemplo para producir una "A" intermedia (440 Hz) el valor divisionista en Registers 0 y 1 seran 254. Registra 2 Y 3 Estos dos registros controlan la B Channel Tone Electrgeno por lo que respecta a Channel. Registra 4 Y 5 Estos dos registros controlan la C Channel Tone Electrgeno por lo que respecta a Channel. Registro 6 76543210 + x x Noise Frequency +--------------------------------- + Figura 26 Adems de ola Tone de tres cuadrados Generators el PSG contiene un solo Generador Noise. La frecuencia fundamental de la fuente de ruido puede controlarse en una moda similar para el Tone Generators. Los cinco aicos menos significativos de Register 6 sostienen un valor divisionista de 1 para 31. La frecuencia maestra Electrgena Noise es 111,861 Hz como antes. Registro 7 76543210 + Exporte A El De Babor CBACBA El Tono De Tono De Tono De Ruido De Ruido De Ruido Del Dir De La A B Dir +----------------------------------------------- + Figura 27 Este registro faculta o lisia al Tone Generator y Noise Electrgeno para cada uno de los tres canales: 0 = Facultan A 1 = Disable. Tambin controla la direccin de A de puertos de la interfaz y B, para el cual las palancas de control y el casete estn adjuntos: 0 = Introducen En La Computadora, 1 = Output. Registro 7 siempre debe contener 10xxxxxx o el dao posible podra resultar para el PSG, hay dispositivos activos a los que se conect su yo los alfileres de la / O. La declaracin de "sonido" de BASIC forzar estos aicos para el valor correcto para Register 7 pero no hay proteccin en el nivel de cdigo de la mquina.
+ La A x x Mode Channel Amplitude + Figura 28 Los aicos cuatro Amplitude determinan la amplitud de A Channel de un mnimo de 0 para un mximum de 15. El bit Mode selecciona a uno u otro centr o modul amplitud: 0 = Se Concentraron, 1 = Modulated. Cuando la amplitud modulada es seleccionada el valor fijo de amplitud es ignorado y el canal est modulado por la salida del Envelope Generator. Registro 9 Este registro controla la amplitud de B Channel por lo que respecta a Channel. Registro 10 Este registro controla la amplitud de C Channel por lo que respecta a Channel. Registra 11 Y 12 76543210 + El sobre Frequency (LSB) R11 + El sobre Frequency (MSB) R12 + Figura 29 Estos dos registros controlan que la frecuencia del solo Envelope Generator us para la modulacin de amplitud. Por lo que respecta al Tone Generators esta frecuencia est resuelta colocando una cuenta divisionista en los registros. El valor divisionista puede extenderse desde 1 para 65535 con Register 11 soporte los aicos menos ocho significativos y Register 12 lo ms significativo. La frecuencia maestra para el Envelope Generator es 6991 Hz as es que el sobre frecuencia puede extenderse de 6991 Hz (divida a las 1) para 0.11 Hz (divida a las 65535).
Figura 30 Los aicos Shape cuatro Envelope determinan la forma del sobre de modulacin de amplitud producido por el Envelope Generator: 3 2 1 Envelope 0 Modulation 00x 01x 1000 1001 1 0 1 0 \/\/\/\/\/\/\/\/\/\ _________________ 1011 1100////////// __________________ 1101/ 1 1 1 0 /\/\/\/\/\/\/\/\/\/ 1111 Figura 31
Registro 14 76543210 + Cas Kbd Se Regocijan Alegra De Alegra De Alegra De Alegra De Alegra Introduzca En La Computadora Modo Trg.B Trg.A Bien Fwd De Atrs Izquierdo + Figura 32 Este registro se usa para leer en A PSG Port. Los seis aicos de la palanca de control reflejan la condicin de los cuatro interruptores de direccin - 24 3. EL GENERADOR EN BUEN ESTADO PROGRAMABLE
Y dos detonan botones en una palanca de control: 0 = Presionaron, 1 = Not en apuros. Alternativamente hasta seis Remos puede estar conectado en lugar de una palanca de control. Aunque la mayora de mquinas MSX tienen dos 9 conectores de la palanca de control del alfiler
al nico le pueden ser ledos a la vez. El que debe ser seleccionado para leer est resuelto por el bit Selecto Joystick en PSG Register 15. El Keyboard Mode mordi es no acostumbrado en UK labra a mquina. En mquinas japonesas est atado a un enlace del vestido sin mangas para determinar el conjunto de caracteres del teclado. El Cassette Input est acostumbrado a leer la seal de la salida de la OREJA del casete. Esto es hecho pasar por un comparador para limpiar los bordes y para mutar para niveles digitales pero est otrora natural. Registro 15 76543210 + El Pulso De Pulso De Alegra Del Kana 1 1 1 1 Sel DIRIGIDO 2 1 + Figura 33 Este registro se usa para devolver para B PSG Port. Los cuatro aicos menos significativos estn conectados por TTL amortiguadores colectores en claro para alfileres 6 y 7 de cada conector de la palanca de control. Estn normalmente listos a uno 1, cuando un remo o la palanca de control est conectada, a fin de que los alfileres pueden funcionar como las entradas. Cuando un touchpad est conectado son utilizados como salidas de apretn de manos. Los aicos dos Pulse se usan para generar un pulso que sale de positivo pequeo para cualquier remos adjunto a la presente para conectores de la palanca de control 1 o 2. Cada remo contiene a un cronometrador monoestable con un reostato variable controlando su largo de pulso. Una vez que el cronometrador se desencadena la colocacin del reostato variable puede estar resuelta contando hasta las interrupciones monoestables. El bit Selecto Joystick determina cul conector de la palanca de control est conectado para la A PSG Port para la entrada: 0 Connector 1, 1 = Connector 2. La salida Kana LED est sin uso en UK labra a mquina. En mquinas japonesas se usa para conducir un sealizador de modo del teclado.
- 25 4. ROM BIOS
El propsito del MSX ROM tiene importancia si los programas de cdigo de la mquina deben ser desarrollados eficazmente y Operate de fuente fidedigna. Casi cada programa, incluir el BASIC Interpreter mismo, tomar un cierto set de funciones del hombre primitivo a manejar.
Estos incluyen conductores de la pantalla y de la impresora, un decodificador del teclado y otro hardware relataron funciones. Separando estas rutinas del BASIC Interpreter puede estar a los que se hizo disponible a cualquier programa de aplicacin. El captulo de ROM de 0000H para 268BH es mayormente devoto para tales rutinas y se llama los ROM BIOS (el Sistema Bsico de Salida Input). Este captulo da una descripcin funcional de cada rutina de la separata del recognizably en los ROM BIOS. La atencin especial es dada a las rutinas "estndar". Estos estn documentados por Microsoft y garantizados guardar consecuencia cambios del hardware directo posible y del software. La primera parte pocos cien bytes del ROM consta de instrucciones Z80 JP que proveen arregladas sitan puntos de entrada para estas rutinas. Para la compatibilidad mxima con software futuro un programa de aplicacin debera restringir su adiccin en el ROM para estas posiciones slo. La descripcin del ROM empieza con esta lista de proposiciones de entrada para las rutinas estndar. Un comentario conciso est posado con cada punto de entrada, la descripcin llena recibe con la rutina misma. Datos Areas Se espera que la mayora de usuarios tendrn el deseo de desensamblar al ROM hasta cierto punto (el listado lleno va en carrera casi cuatrocientas pginas). Para aliviar este proceso las reas de datos, cul no contiene cdigo ejecutable Z80, es exteriorizado debajo: 73E4H-73E4H de 4B3AH-4B4CH de 185DH-1863H de 0004H-0007H 752EH-7585H de 4C2FH-4C3FH de 1B97H-1BAAH de 002BH-002FH 7754H-7757H de 555AH-5569H de 1BBFH-23BEH de 0508H-050DH 7BA3H-7BCAH de 5D83H-5DB0H de 2439H-2459H de 092FH-097FH 7ED8H-7F26H de 6F76H-6F8EH de 2CF1H-2E70H de 0DA5H-0EC4H 7F41H-7FB6H de 70FFH-710CH de 3030H-3039H de 1033H-105AH 7FBEH-7FFFH de 7182H-7195H de 3710H-3719H de 1061H-10C1H 71A2H-71B5H de 392EH-3FE1H de 1233H-1252H 71C7H-71DAH de 43B5H-43C3H de 13A9H-1448H 72A6H-72B9H de 46E6H-46E7H de 160BH-1612H Noto que estas reas de datos son para el UK ROM, hay diferencias leves en el ROM japons referente al decodificador del teclado y el conjunto de caracteres de vdeo. Las disparidades entre los ROMs estn restringidas para estas regiones con la masa del cdigo siendo idnticas en ambos casos.
- 26 4. ROM BIOS La terminologa La referencia est frecuentemente hecha en este captulo para las rutinas estndar y para las variables Workspace Area. Cuandoquiera esto est hecho el nombre recomendable a Microsoft es usado en cartas de caja alta, para el ejemplo "la rutina del estndar FILVRM" y "SCRMOD est listo. Subroutines que no es nombrado es referido por una direccin del parenthesized, "la pantalla es
despejada (0777H )" por ejemplo. Cundo la referencia es hecha a las buenas costumbres de lenguaje de asamblea de banderas de estado Z80 son usadas, pues el ejemplo "bandera C" significara que lo lleve la bandera es set mientras "la Bandera NZ" quiere decir que la bandera de cero es vuelta a arrancar. Las condiciones "EI" y "DI" trmino medio posibilitado interrumpen y deshabilitado interrumpe respectivamente. ADDR. NOMBRE FUNCIONAR --------------------------------------------------------------------- 0000H CHKRAM 02D7H 0004H que se energiza arriba de la RAM del cheque............ Dos bytes, la direccin de 0006H de conjunto de caracteres ROM............ Un byte, el 0007H de nmero VDP Data Port............ Un byte, el 000BH de carcter de programa de BASIC de nmero VDP Data Port 0008H SYNCHR 2683H Check............ NOP 000CH RDSLT 01B6H Ley la RAM en cualquier 000FH de la ranura............ NOP 0010H CHRGTR 2686H Get despus 0013H de carcter de programa de BASIC............ NOP 0014H WRSLT 01D1H Write para METER A LA FUERZA cualquier 0017H de la ranura............ El 1B45H NOP 0018H OUTDO Output para 001BH del dispositivo en uso en estos momentos............ La rutina NOP 001CH CALSLT 0217H Call en cualquier 001FH de la ranura............ El registro NOP 0020H DCOMPR 146AH Compare parea al 0023H HL y Delaware............ NOP 0024H ENASLT 025EH Enable cualquier ranura permanentemente 0027H............ El 002BH de tipo del operand de BASIC NOP 0028H GETYPR 2689H Get............ Rutina Call 0205H CALLF Version Number 0030H de cinco bytes en cualquier 0033H de la ranura............ Manipulador Interrupt 0C3CH KEYINT cinco NOPs 0038H, teclado escudria que 003BH INITIO 049DH Initialize que yo la llave de funcin de dispositivos de la / O 003EH INIFNK 139DH Initialize ato con una cuerda pantalla de la pantalla 0041H DISSCR 0577H Disable 0044H ENASCR 0570H Enable 0047H WRTVDP 057FH Write para cualquier registro VDP 004AH RDVRM 07D7H Ley el byte de byte VRAM 004DH WRTVRM 07CDH Write para VRAM 0050H SETRD 07ECH Set arriba de VDP para ledo 0053H SETWRT 07DFH Set arriba de VDP para escribe el bloque 0056H FILVRM 0815H Fill de VRAM con bloque de byte de datos 0059H LDIRMV 070FH Copy para la memoria de bloque VRAM 005CH LDIRVM 0744H Copy para VRAM, de modo de memoria 005FH CHGMOD 084FH Change VDP - 27 4. ROM BIOS
El 0065H de colores 0062H CHGCLR 07F7H Change VDP............ El manipulador NOP 0066H NMI 1398H Non Maskable Interrupt 0069H CLRSPR 06A8H Clear todo bloque de objetos movibles 006CH INITXT 050EH Initialize VDP para 40x24 Text Mode 006FH INIT32 0538H Initialize VDP para 32x24 Text Mode 0072H INIGRP 05D2H Initialize VDP para Graphics Mode 0075H INIMLT 061FH Initialize VDP para el Multicolor Mode 0078H SETTXT 0594H Coloc VDP para 40x24 Text Mode 007BH SETT32 05B4H Coloc a VDP para 32x24 Text Mode 007EH SETGRP 0602H Set VDP para Graphics Mode 0081H SETMLT 0659H Set VDP para direccin Multicolora Mode 0084H CALPAT 06E4H Calculate de direccin del patrn de bloque de objetos movibles 0087H CALATR 06F9H Calculate de carcter de tamao de bloque de objetos movibles de atributo de bloque de objetos movibles 008AH GSPSIZ 0704H Get 008DH GRPPRT 1510H Print en grficoLa pantalla 0090H GICINI 04BDH Initialize PSG 0093H WRTPSG 1102H (GI Chip) Write para cualquier registro PSG 0096H RDPSG 110EH Ley de cualquier amortiguador del teclado de msica de registro PSG 0099H STRTMS 11C4H Start dequeueing 009CH CHSNS 0D6AH Sense para el carcter de carcter 009FH CHGET 10CBH Get de carcter de prueba de estado de la impresora de salida de carcter de la impresora de salida de carcter del amortiguador del teclado 00A2H CHPUT 08BCH Screen 00A5H LPTOUT 085DH Line 00A8H LPTSTT 0884H Line 00ABH CNVCHR 089DH Convert (la espera) con lnea grfica del encabezado 00AEH PINLIN 23BFH Get de lnea de la consola 00B1H INLIN 23D5H Get (el editor) de consola 00B4H QINLIN 23CCH (el editor) Display "?, Traiga lnea de consola 00B7H BREAKX 046FH Check (el editor) CTRL-STOP llave directamente 0848H de Lingsticas Computacionales del 00C3H del pip del 1113H del PIP del 00C0H de la llave de la llave 00BAH
ISCNTC 03FBH Check CRTL-STOP 00BDH CKCNTC 10F9H Check CTRL-STOP Go colocacin del cursor del 088EH del 00C6H de la pantalla Clear POSIT Set 00C9H FNKSB 0B26H Check si funcione despliegue crucial en llaves funcin despliegue llave funcin 00CCH ERAFNK 0B15H Erase 00CFH DSPFNK 0B2BH Display 00D2H TOTEXT 083BH Return VDP para la entrada de estado del remo de estado de la almohadilla de toque de estado del gatillo de estado de la palanca de control de modo del texto 00D5H GTSTCK 11EEH Get 00D8H GTTRIG 1253H Get 00DBH GTPAD 12ACH Get 00DEH GTPDL 1273H Get 00E1H TAPION 1A63H Tape EN 00E4H TAPIN1ABCH Tape la entrada 00E7H TAPIOF 19E9H Tape la entrada FUERA DE la salida 00EAH TAPOON 19F1H Tape EN la salida de salida 00EDH TAPOUT 1A19H Tape 00F0H TAPOOF 19DDH Tape FUERA DE motor 00F3H STMOTR 1384H Turn ON/OFF 00F6H LFTQ 14EBH Space sali en el byte de la cola de msica 00F9H PUTQ 1492H Put en direccin fsica del pixel de corriente de derecho de la direccin fsica del pixel de corriente de la cola de msica 00FCH RIGHTC 16C5H Move 00FFH LEFTC 16EEH Move izquierda
- 28 4. ROM BIOS La direccin fsica del pixel de corriente 0102H UPC 175DH Move arriba de 0105H TUPC 173CH Test luego UPC si la direccin legal de reconocimiento mdico del pixel de corriente 0108H DOWNC 172AH Move abajo de 010BH TDOWNC 170AH Test luego DOWNC si grfico legal de coordenadas de grficos 010EH SCALXY 1599H Scale 0111H MAPXYC 15DFH Map coordina para el byte de atributo de la direccin fsica del pixel de corriente de la direccin fsica del pixel de corriente de la direccin fsica 0114H FETCHC 1639H Fetch 0117H STOREC 1640H Store 011AH SETATR 1676H Set 011DH READC 1647H Leyese el atributo de atributo coetneo pixel 0120H SETC 167EH Set de atributo coetneo pixel 0123H NSETCX 1809H Set de nmero de proporcin dimensional pixels 0126H GTASPC 18C7H Get 0129H PNTINI 18CFH Paint inicializa a 012CH SCANR 18E4H ScanLos pixels para enderezar a 012FH los pixels SCANL 197AH Scan para izquierdo 0132H CHGCAP 0F3DH Change Caps salida sonido Lock LED 0135H CHGSND 0F7AH Change Key Click 0138H RSLREG 144CH Read Primary Slot Register 013BH WSLREG 144FH Write para fila Primaria Slot Register 013EH RDVDP 1449H Read VDP Status Register 0141H SNSMAT 1452H Read de matriz del teclado 0144H PHYDIO 148AH Disk, ningn 148EH de FORMATO de 0147H de accin Disk, ningn accin 014AH ISFLIO 145FH Check para archivo yo la salida / O 014DH OUTDLP 1B63H Formatted para aplicar delineador a amortiguador de la teclado de la puntero de la voz de la msica de la puntero de la voz de la msica de la impresora 0150H GETVCP 1470H Get 0153H GETVC2 1474H Get 0156H KILBUF 0468H Clear 0159H CALBAS 01FFH Call paraEl BASIC de cualquier 015CH de la ranura............ Los NOPs para 01B5H para la expansin
La direccin ... 01B6H El nombre...... RDSLT La entrada..... Un = Slot Idaho, HL = Address La salida...... Un = Byte ley Modifica.. AF, BC, DE, DI La rutina estndar para leer un solo byte de memoria en cualquier ranura. El Slot Identifier est compuesto de un nmero Primario Slot un nmero Secundario Slot y una bandera: 76543210 + Bandera 0 0 0 La Ranura Secundaria La Ranura # Primaria +--------------------------------------------------------------- + Figura 34: La ranura Idaho
La bandera es normalmente 0 sino que deben ten er 1 aos de edad si un nmero Secondary Slot es incluido en el Slot Idaho. La direccin de memoria y Slot Idaho son primero tratado (027EH) para ceder un set de mscaras mordidas para aplicarse al registro pertinente de la ranura. Si un nmero Secundario Slot es - 29 4. ROM BIOS Especifiqu que luego el Slot Secundario Register es primero modificado para seleccionar la pgina pertinente de ese Slot Secundario (02A3H). El Slot Primario es entonces cambiado en para el espacio de la direccin Z80, el byte lee y el Primario Slot recuperado para su original incrustando a por la rutina RDPRIM en el Workspace Area. Finalmente, si un nmero Secundario Slot es incluido en el Slot Idaho, entonces la Ranura Secundaria original Registro sedimentndose est recuperado (01ECH). Note eso, a menos que es la ranura conteniendo al Workspace Area, cualquier intento para ganar acceso a pgina 3 (C000H para FFFFH) causar el sistema para chocar como RDPRIM se cambiar a s mismo fuera. Noto tambin eso interrumpe se queda deshabilitada por toda la memoria cambiando rutinas. La direccin ... 01D1H El nombre...... WRSLT La entrada..... Una = Ranura CDULA DE IDENTIDAD, HL = Discurso, E = Byte a escribir La salida...... Ninguno Modifica.. AF, BC, D, DI La rutina estndar para escribir un solo byte para la memoria en cualquier ranura. Su operacin es fundamentalmente as como eso de la rutina del estndar RDSLT excepto que la rutina Workspace Area WRPRIM es usada en vez de RDPRIM. La direccin ... 01FFH El nombre...... CALBAS La entrada..... IX = Address La salida...... Ninguno Modifica.. AF ', BC ', DE ', HL ', IY, DI La rutina estndar para llamar una direccin en el BASIC Interpreter de cualquier ranura. Usualmente esto ser de un programa de cdigo de la mquina marchando en una extensin ROM en pgina 1 (4000H para 7FFFH). El byte alto de par de registro IY es cargado con el MSX ROM Slot Idaho (00H) y control transfiere para la rutina del estndar CALSLT. La direccin ... 0205H El nombre...... CALLF La entrada..... Ninguno La salida...... Ninguno Modifica.. AF ', BC ', DE ', HL ', IX, IY, DI La rutina estndar para llamar una direccin en cualquier ranura. El Slot Idaho y direccin son suministrados como parmetros del inline en vez de en registros para acomodar dentro de un gancho (el Captulo 6), por ejemplo: RST 30H DEFB Haga Una Ranura En Idaho
DEFW Address ENRE El Slot Idaho es primero cobrado y acomodado en el byte alto de par de registro IY. La direccin es luego colocada en par de registro - 30 4. ROM BIOS IX y cadas de control en la rutina del estndar CALSLT. La direccin ... 0217H El nombre...... CALSLT La entrada..... IY (el byte Alto) = Haga Una Ranura En = Address Idaho, IX La salida...... Ninguno Modifica.. AF ', BC ', DE ', HL ', DI La rutina estndar para llamar una direccin en cualquier ranura. Su operacin es fundamentalmente as como eso de la rutina del estndar RDSLT excepto que la rutina Workspace Area CLPRIM es usada en vez de RDPRIM. Noto que CALBAS y CALLF son proposiciones de entrada simplemente especializadas para esta rutina estndar que ofrecen una reduccin en la cantidad de cdigo tom. La direccin ... 025EH El nombre...... ENASLT La entrada..... Un = Slot Idaho, HL = Address La salida...... Ninguno Modifica.. AF, BC, DE, DI La rutina estndar a cambiar de decisin en una pgina permanentemente de cualquier ranura. A diferencia del RDSLT, WRSLT y rutinas del estndar CALSLT el Primary Slot cambiando de decisin son realizados directamente y no por una rutina Workspace Area. Consecuentemente las direcciones de adentro mandan a llamar 0 (0000H para 3FFFH) causarn un choque inmediato de sistema. La direccin ... 027EH Esta rutina es usada por la memoria cambiando rutinas estndar para revolver una direccin, en par de registro HL, y un Slot Idaho, adentro registra UNO, en un set de mscaras mordidas. Como un ejemplo un Slot Idaho de FxxxSSPP y una direccin en Page 1 (4000H para 7FFFH) devolvera lo siguiente: Registro B = 00 00 PP 00 (la mscara de Oregon) Registro C = 11 11 00 11 (Y la mscara) El registro D=PP PP PP (Replegado) Registro E = 00 00 11 00 (la mscara de la Pgina) La B de registros y C estn derivativas del nmero Primario Slot y la mscara de la pgina. Estn ms tarde acostumbrados a mezclar el nmero Primario nuevo Slot en los contenidos existentes del Slot Primario Register. La D de registro contiene el nmero de la Ranura Primario replegado cuatro veces y la E de registro la mscara de la pgina. Esto se produce examinando los dos aicos ms significativos de la direccin, para determinar el nmero de la pgina, y luego intercambiando la mscara
adelante para la colocacin pertinente. Estos registros son ms tarde usados durante el Secundario Slot cambiando de decisin. Como la rutina termina bit 7 del Slot Idaho es probado, determinar si un Slot Secundario ha estado especificado, y la Bandera la M regres si esto est as.
- 31 4. ROM BIOS
La direccin ... 02A3H Esta rutina es usada por la memoria cambiando rutinas estndar para modificar a un Slot Secundario Register. El Slot a Idaho est suministrado en A de registro mientras D de registros y E contienen las mscaras mordidas mostradas en la rutina previa. Los aicos 6 y 7 de D de registro son primero copiado en el registro Primario Slot. Esto hace cambiar en pgina 3 del Slot Primario especificado por el Slot Idaho y le hace disponible al Slot Secundario requerido Register. Esto es entonces ledo de posicin de memoria FFFFH y la mscara de la pgina, invertido, solido descongestionarse los aicos dos requeridos. El nmero Secundario Slot es intercambiado para la colocacin pertinente y mezclado adentro. Finalmente el trasfondo nuevo es colocado en el Slot Secundario Register y el Slot Primario Register restituy a su original sedimentndose. La direccin ... 02D7H El nombre...... CHKRAM La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, SP La rutina estndar para realizar inicializacin de memoria en energizar. Poco destructivamente experimenta para RAM en pginas 2 y 3 en todas las diecisis ranuras posibles luego coloca que el Slot Primario y Secundario se registra para cambiar de decisin en el rea ms grande encontrado. De el Workspace entero Area (F380H para FFC9H) es puesto en el cero y EXPTBL y SLTTBL trazar un mapa cualquier interfaces de expansin en existencia Interrupt Mode 1 est colocado y el control se traslada para el resto de la rutina que se impulsa arriba (7C76H) de inicializacin. La direccin ... 03FBH El nombre...... ISCNTC La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, EI La rutina estndar a comprobar si el CTRL-STOP o DETENER llaves se han apretado. Es usado por el BASIC Interpreter al final de cada declaracin para revisar en busca de terminacin de programa. BASROM es primero examinado para ver si contiene un valor de poco cero, si as es que la rutina termina inmediatamente. Esto debe impedir a los usuarios rompiendo relaciones en cualquier extensin ROM conteniendo un programa de BASIC. INTFLG es entonces a cuadros para determinar si lo interrumpe manipulador ha colocado al CTRL-STOP o cdigos de la llave de ALTO (03H o 04H) all. Si el ALTO ha sido detectado luego el cursor se enciende (09DAH) e INTFLG continuamente inspeccion hasta uno de los dos cdigos cruciales reaparece. El cursor es entonces revuelto apagado (0A27H) y, si la llave fuera SE DETIENE, la rutina termina.
Si CTRL-STOP ha sido detectado luego el amortiguador del teclado es primero aclarado por la rutina del estndar KILBUF y TRPTBL es
- 32 4. ROM BIOS
A cuadros para ver si uno "en STOP GOSUB" declaracin es activo. Si as es que la entrada pertinente en TRPTBL es actualizada (0EF1H) y la rutina termina como el acontecimiento ser manipulado por el Interpreter Runloop. De otra manera la rutina del estndar ENASLT se usa para cambiar en pgina 1 del MSX ROM, en el caso una extensin ROM usa la rutina, y las transferencias de control para el "alto" manipulador de declaracin (63E6H). La direccin ... 0468H El nombre...... KILBUF La entrada..... Ninguno La salida...... Ninguno Modifica.. HL El estndar Routine para descongestionar el cuarenta carcter amortiguador que se escribe a mquina delante del teclado KEYBUF. Hay dos punteros en este amortiguador, PUTPNT donde lo interrumpe personajes de lugares del manipulador, y GETPNT donde los programas de aplicacin los van a traer de. Como el nmero de personajes en el amortiguador est indicado por la diferencia entre estos dos punteros KEYBUF es vaciado simplemente hacindolos ambos iguales. La direccin ... 046FH El nombre...... BREAKX La entrada..... Ninguno La salida...... La C de la bandera si la llave CTRL-STOP presion Modifica.. AF La rutina estndar que directamente experimenta hace avanzar con el remo 6 y 7 del teclado a determinar si el CTRL y las llaves de ALTO son ambos presionados. Si son luego KEYBUF es descongestionado y fila 7 de OLDKEY modificado para impedir lo interrumpe manipulador recogiendo las llaves igualmente. Esta rutina a menudo puede ser ms adecuada para el uso por un programa de aplicacin, preferentemente a ISCNTC, como surtir efecto cuando interrumpe es deshabilitado, durante casete yo / la O por ejemplo, y no egresa para el Interpreter. La direccin ... 049DH El nombre...... INITIO La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, E, EI La rutina estndar para inicializar al PSG y el Centronics Status Port. PSG Registre 7 es primero determinado para 80H haciendo B PSG Port = Output y A PSG Port = Input. PSG Registre 15 est listo para CFH para poner las iniciales en el hardware de control del conector Joystick. PSG Registre 14 son entonces ledos y el Keyboard Mode mordido colocado en KANAMD, ste no tiene relevancia para mquinas UK. Finalmente un valor de FFH es salida para el Centronics Status Port (yo / la O exporto a 90H) para ajustar la seal de la LUZ ESTROBOSCPICA a gran altura. El control luego cae en la
- 33 4. ROM BIOS
La direccin ... 04BDH El nombre...... GICINI La entrada..... Ninguno La salida...... Ninguno Modifica.. EI La rutina estndar para inicializar al PSG y las variables Workspace Area se asoci con el "juego" declaracin. QUETAB, VCBA, VCBB y VCBC son primero inicializados con los valores mostrado en Chapter 6. PSG Registers 8, 9 y 10 estn luego dispuestos a poner en el cero amplitud y PSG Register 7 para B8H. Esto faculta al Tone Generator y lisia al Noise Electrgeno en cada canal. La direccin ... 0508H Este seis byte la mesa contiene el "juego" parmetros de declaracin inicialmente colocados en VCBA, VCBB y VCBC por la rutina del estndar GICINI: La octava = 4, Length = 4, Tempo = 120, Volume 88H, = el 00FFH Envelope. La direccin ... 050EH El nombre...... INITXT La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para inicializar al VDP para el 40x24 Text Mode. La pantalla es por ahora deshabilitada por la rutina del estndar DISSCR y SCRMOD y OLDSCR determinado para 00H. Los parmetros requeridos por la rutina del estndar CHPUT son establecidos por LINI.40 copiador para LINLEN, TXTNAM para NAMBAS y TXTCGP para CGPBAS. Los colores VDP estn luego colocados por la rutina del estndar CHGCLR y la pantalla es despejada (077EH). El conjunto de caracteres coetneo es emulado en el VRAM Character Pattern Table (071EH). Finalmente el modo VDP y direcciones bajo estn colocados por la rutina del estndar SETTXT y la pantalla es habilitada. La direccin ... 0538H El nombre...... El INIT32 La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para inicializar al VDP para el 32x24 Text Mode. La pantalla es por ahora deshabilitada por la rutina del estndar DISSCR y SCRMOD y OLDSCR determinado para 01H. Los parmetros requeridos por la rutina del estndar CHPUT son establecidos por LINL32 copiador para LINLEN, T32NAM para NAMBAS, T32CGP para CGPBAS, T32PAT para PATBAS y T32ATR para ATRBAS. Los colores VDP estn luego colocados por la rutina del estndar CHGCLR y la pantalla es despejada (077EH). El conjunto de caracteres coetneo es emulado en el VRAM Character Pattern Table (071EH) y todos los bloques de objetos movibles aclarados (06BBH). Finalmente el modo VDP y direcciones bajo estn colocados por la rutina del estndar del SETT32 y la pantalla es habilitada.
- 34 4. ROM BIOS
La direccin ... 0570H El nombre...... ENASCR La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, EI La rutina estndar para habilitar la pantalla. Esto simplemente implica bit de trasfondo 6 de VDP Mode Register 1. La direccin ... 0577H El nombre...... DISSCR La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, EI La rutina estndar para desactivar la pantalla. Esto simplemente implica reanudar bit 6 de VDP Mode Register 1. La direccin ... 057FH El nombre...... WRTVDP La entrada..... El byte de la B = Data, el nmero C=VDP Mode Register La salida...... Ninguno Modifica.. AF, B, EI La rutina estndar para escribir un byte de datos para cualquier VDP Mode Register. El byte de seleccin de a registro le es primero escrito para el VDP Command Port, seguido por el byte de datos. Esto es entonces copiado para la imagen pertinente de registro, RGOSAV para RG7SAV, en el Workspace Area La direccin ... 0594H El nombre...... SETTXT La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para parcialmente colocar al VDP para el 40x24 Text Mode. El aicos de modo M1, M2 y M3 son primero incrustados en VDP Mode Registers 0 y 1. La cinco base de la mesa VRAM las direcciones, el comienzo con TXTNAM, es entonces copiado del Workspace Area en VDP Mode Registers 2, 3, 4, 5 y 6 (0677H). La direccin ... 05B4H El nombre...... El SETT32 La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para parcialmente colocar al VDP para el 32x24 Text Mode. El aicos de modo M1, M2 y M3 son primero incrustados en VDP Mode Registers 0 y 1. La cinco base de la mesa VRAM las direcciones, el comienzo con T32NAM, es entonces copiado del Workspace Area en VDP Mode Registers 2, 3, 4, 5 y 6 (0677H).
- 35 4. ROM BIOS
La direccin ... 05D2H El nombre...... INIGRP La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para inicializar al VDP para Graphics Mode. La pantalla es por ahora deshabilitada por la rutina del estndar DISSCR y SCRMOD determinado para 02H. Los parmetros requeridos por la rutina del estndar GRPPRT son establecidos por GRPPAT copiador para PATBAS y GRPATR para ATRBAS. El patrn del conductor de cdigo de caracteres es entonces copiada en el VDP Name Table, la pantalla despejado (07A1H) y todos los bloques de objetos movibles aclarados (06BBH). Finalmente el modo VDP y direcciones bajo estn colocados por la rutina del estndar SETGRP y la pantalla es habilitada. La direccin ... 0602H El nombre...... SETGRP La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para parcialmente colocar al VDP para Graphics Mode. El aicos de modo M1, M2 y M3 son primero incrustados en VDP Mode Registers 0 y 1. La cinco base de la mesa VRAM las direcciones, el comienzo con GRPNAM, es entonces copiado del Workspace Area en VDP Mode Registers 2, 3, 4, 5 y 6 (0677H). La direccin ... 061FH El nombre...... INIMLT La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para inicializar al VDP para el Multicolor Mode. La pantalla es por ahora deshabilitada por la rutina del estndar DISSCR y SCRMOD determinado para 03H. Los parmetros requeridos por la rutina del estndar GRPPRT son establecidos por MLTPAT copiador para PATBAS y MLTATR para ATRBAS. El patrn del conductor de cdigo de caracteres es entonces copiada en el VDP Name Table, la pantalla despejado (07B9H) y todos los bloques de objetos movibles aclarados (06BBH). Finalmente el modo VDP y direcciones bajo estn colocados por la rutina del estndar SETMLT y la pantalla es habilitada. La direccin ... 0659H El nombre...... SETMLT La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para parcialmente colocar al VDP para el Multicolor Mode. El aicos de modo M1, M2 y M3 son primero incrustados en VDP Mode Registers 0 y 1. La cinco base de la mesa VRAM las direcciones, el comienzo con MLTNAM, es entonces copiado del Workspace
Area
- 36 4. ROM BIOS
Para VDP Mode Registers 2, 3, 4, 5 y 6. La direccin ... 0677H Esta rutina es usada por el SETTXT, SETT32, SETGRP y las rutinas del estndar SETMLT para copiar un bloque de direcciones de cinco mesas de bajo del Workspace Area en VDP Mode Registers 2, 3, 4, 5 y 6. En las proposiciones del par de registro de entrada HL para el grupo pertinente de direcciones. Cada direccin bajo es coleccionada a su vez intercambiado el nmero requerido de lugares y luego escrito para el Mode pertinente Register por la rutina del estndar WRTVDP. La direccin ... 06A8H El nombre...... CLRSPR La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para aclarar todos los bloques de objetos movibles. El entero Sprite de 2 KBES Pattern Table se llena primero de ceros por la rutina del estndar FILVRM. La coordenada vertical de cada uno de los treinta y dos bloques de atributo de bloque de objetos movibles es luego determinado - 47 (D1H) para colocar el bloque de objetos movibles por encima de la parte superior de la pantalla, la coordenada horizontal es a la que se dej tal cual. El patrn numera en el Sprite Attribute Table es en lo que se puso las iniciales con la serie 0, 1, 2, 3, 4, ... 31 para bloques de objetos movibles del 8x8 o la serie 0, 4, 8, 12, 16, ... 124 para bloques de objetos movibles del 16x16. La serie a ser generada est resuelta por el Size mordi en VDP Mode Register 1. Finalmente el byte de color de cada bloque de objetos movibles que el bloque de atributo est suplido con el cdigo de color contuvo en FORCLR, ste es inicialmente blanco. Noto que los aicos Size y Mag en VDP Mode Register 1 no son afectados por esta rutina. Note tambin que el INIT32, INIGRP y rutinas del estndar INIMLT usan esta rutina con un punto de entrada en 06BBH, dejando al Sprite Pattern Table ecunime. La direccin ... 06E4H El nombre...... CALPAT La entrada..... Un nmero del patrn = Sprite La salida...... La direccin del patrn HL = Sprite Modifica.. AF, DE, HL La rutina estndar para calcular el discurso de un patrn de bloque de objetos movibles. El nmero del patrn es primero multiplicado por ocho luego, si los bloques de objetos movibles del 16x16 son seleccionados, multiplicado por un ms factor de cuatro. Esto se agrega luego a la direccin bajo Table Pattern Sprite, tomado de PATBAS, para producir la direccin de cierre. Este sistema de numeracin est formados en lnea con uso de BASIC Interpreter de nmeros del patrn en vez de los VDP's cuando los bloques de objetos movibles del 16x16 son seleccionados. Como un ejemplo mientras el Interpreter llama el segundo patrn nmero uno, es realmente
- 37 4. ROM BIOS
VDP modele nmero cuatro. Este uso significa que el nmero mximo del patrn que esta rutina debera permitir, cuando los bloques de objetos movibles del 16x16 son seleccionados, es sesenta y tres. No hay cheque real en este acabse as es que el patrn grande que los nmeros producirn dirige la palabra ms gran que 3FFFH. Tales direcciones, estando aprobado para el otro VDP las rutinas, se enrollarn aproximadamente despus del cero y le corrompern al Character Pattern Table en VRAM. La direccin ... 06F9H El nombre...... CALATR La entrada..... Un nmero = Sprite La salida...... La direccin de atributo HL = Sprite Modifica.. AF, DE, HL La rutina estndar para calcular el discurso de un bloque de atributo de bloque de objetos movibles. El nmero de bloque de objetos movibles, de cero para treinta y uno, es multiplicado a las cuatro y se suma a la direccin bajo Table Attribute Sprite tomado de ATRBAS. La direccin ... 0704H El nombre...... GSPSIZ La entrada..... Ninguno La salida...... Un = Bytes en patrn de bloque de objetos movibles (8 o 32) Modifica.. AF La rutina estndar para devolver el nmero de bytes ocupados por cada patrn de bloque de objetos movibles en el Sprite Pattern Table. El resultado es determinado simplemente examinando al Size bit en VDP Mode Register 1. La direccin ... 070FH El nombre...... LDIRMV La entrada..... AC la direccin = Length, DE=RAM, la direccin HL=VRAM La salida...... Ninguno Modifica.. AF, BC, DE, EI La rutina estndar para copiar un bloque en la memoria principal del VDP VRAM. El VRAM echando a andar direccin est listo por la rutina del estndar SETRD y luego los bytes secuenciales leyeron del VDP Data Port y colocado en la memoria principal. La direccin ... 071EH Esta rutina se usa para emular un conjunto de caracteres de 2 KBES en el VDP Character Pattern Table en cualquier modo. La direccin bajo del Character Pattern Table en VRAM es tomada de CGPBAS. La direccin de puesta en marcha del conjunto de caracteres es tomada de CGPNT. La rutina del estndar RDSLT se usa para leer los datos de carcter tan este puede estar situada en una extensin ROM. En CGPNT que se energiza arriba es inicializado con la direccin contenida en posicin ROM 0004H, lo cual es 1BBFH. CGPNT est con holgura alterado para producir algunos resultados interesantes, PINCHAZO y HF920, y HC7:PANTALLA 0 provee un ejemplo a fondo confuso.
- 38 4. ROM BIOS
La direccin ... 0744H El nombre...... LDIRVM La entrada..... AC la direccin = Length, DE=VRAM, la direccin HL=RAM La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para copiar un bloque para VRAM de memoria principal. El VRAM echando a andar direccin est listo por la rutina del estndar SETWRT y los bytes luego secuenciales tomados de memoria principal y escrito para el VDP Data Port. La direccin ... 0777H Esta rutina despejar la pantalla en cualquier modo VDP. En 40x24 Text Mode y 32x24 Text Mode el Name Table, quin es aquel cuya direccin bajo es tomada de NAMBAS, se llena primero de espacios de ASCII. El cursor es luego determinado para la colocacin de la casa (0A7FH) y LINTTB, la mesa de terminacin de la lnea, en la que se repuso las iniciales. Finalmente el despliegue de la llave de funcin est recuperado, si es posibilitado, por la rutina del estndar FNKSB. En Graphics Mode el color fronterizo est primero determinado por VDP Mode Register 7 (0832H). El Colour Table se llena luego del cdigo de color de fondo, tomado de BAKCLR, para ambos 0 y 1 pixels. Finalmente el Character del que Pattern Table es llenado pone en el cero. En el Multicolor Mode el color fronterizo es primero determinado por VDP Mode Register 7 (0832H). El Character Pattern Table se llena luego del color de fondo tomado de BAKCLR. La direccin ... 07CDH El nombre...... WRTVRM La entrada..... Una direccin = Data de byte, HL=VRAM La salida...... Ninguno Modifica.. EI La rutina estndar para escribir un solo byte para el VDP VRAM. La direccin a VRAM le es primero establecido por la rutina del estndar SETWRT y luego el byte de datos para el VDP Data Port. Noto que el dos aparentemente instrucciones EX espurio (SP), HL en esta rutina, y varios otros, estoy obligado a encontrar las restricciones de oportunidad del momento de VDP's. La direccin ... 07D7H El nombre...... RDVRM La entrada..... La direccin HL=VRAM La salida...... Un = Byte ley Modifica.. AF, EI La rutina estndar para leer un solo byte del VDP VRAM. La direccin VRAM es primero establecida por la rutina del estndar SETRD y luego el byte ley del VDP Data Port.
- 39 -
4. ROM BIOS
La direccin ... 07DFH El nombre...... SETWRT La entrada..... La direccin HL=VRAM La salida...... Ninguno Modifica.. AF, EI La rutina estndar para hacer caer en una trampa al VDP para subsiguiente escribe a VRAM por la Data Port. La direccin contuvo en par de registro HL est escrito para el VDP Command Port LSB primero, el segundo MSB como se muestra en Figure 7. Dirige la palabra ms gran que el 3FFFH se enrollar aproximadamente despus del cero como los dos aicos ms significativos de la direccin estn ignorados. La direccin ... 07ECH El nombre...... SETRD La entrada..... La direccin HL=VRAM La salida...... Ninguno Modifica.. AF, EI La rutina estndar para hacer caer en una trampa al VDP para subsiguientes lecturas de VRAM por la Data Port. La direccin contuvo en par de registro HL est escrito para el VDP Command Port LSB primero, el segundo MSB como se muestra en Figure 7. Dirige la palabra ms gran que el 3FFFH se enrollar aproximadamente despus del cero como los dos aicos ms significativos de la direccin estn ignorados. La direccin ... 07F7H El nombre...... CHGCLR La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, HL, EI La rutina estndar para colocar los colores VDP. SCRMOD es primero examinado para determinar el curso de la accin apropiado. En 40x24 Text Mode los contenidos de BAKCLR y a FORCLR les es para VDP Mode Register 7 para colocar el color de los 0 y 1 pixels, stos son inicialmente azules y blancos. Note eso en este modo no hay muy de especificar el color fronterizo, esto ser lo mismo como el color 0 pixel. En 32x24 Text Mode, Graphics Mode o Mode Multicolor los contenidos de a BDRCLR le es para VDP Mode Register 7 para colocar el color del borde, ste es inicialmente azul. Tambin en 32x24 Text Mode que los contenidos de BAKCLR y FORCLR son emulados para todo el Colour Table para determinar los 0 y 1 colores pixel. La direccin ... 0815H El nombre...... FILVRM La entrada..... Una direccin = Data de byte, BC = Length, HL=VRAM La salida...... Ninguno Modifica.. AF, BC, EI La rutina estndar de la que llenar un bloque del VDP VRAM un byte de datos del soltero. El VRAM echando a andar direccin, contenido en par de registro HL, es primero al que se hizo caer en una trampa por el estndar SETWRT
- 40 4. ROM BIOS
La rutina. El byte de a datos le es luego repetidamente para el VDP Data Port para llenar posiciones sucesivas VRAM. La direccin ... 083BH El nombre...... TOTEXT La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para devolver al VDP para ya sea 40x24 Text Mode o 32x24 Text Mode si est actualmente de Modo Graphics o el Multicolor Mode. Es usado por el BASIC Interpreter Mainloop y por la "entrada" manipulador de declaracin. Cuandoquiera que el INITXT o rutinas estndar INIT32 est usado el byte de modo, 00H o 01H, es emulado en OLDSCR. Si el modo se vara subsiguientemente a Graphics Mode o el Multicolor Mode, y luego tiene que ser devuelto a uno de los dos modos del texto pues la entrada del teclado, esta rutina asegura que regresa al mismo. SCRMOD es primero examinado y, si la pantalla est ya en ya sea el modo del texto, la rutina simplemente termina sin accin. De otra manera el modo previo del texto es tomado de OLDSCR y pasado para la rutina del estndar CHGMOD. La direccin ... 0848H El nombre...... Las Lingsticas Computacionales La entrada..... Z de la bandera La salida...... Ninguno Modifica.. AF, BC, DE, EI La rutina estndar para despejar la pantalla en cualquier modo, eso nada sino llama la rutina en 0777H. ste son de hecho los "CLS" manipulador de declaracin y, porque esto seala que hay texto ilegal despus de la declaracin, simplemente regresar si es entrado con Flag NZ. La direccin ... 084FH El nombre...... CHGMOD La entrada..... Un modo = Screen requerido (0, 1, 2, 3) La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para ajustar un modo nuevo de la pantalla. La A de registro, conteniendo el modo requerido de la pantalla, es probado y control transferido para INITXT, INIT32, INIGRP o INIMLT. La direccin ... 085DH El nombre...... LPTOUT La entrada..... Un = Character a escribir en letras de imprenta La salida...... La C de la bandera si la terminacin CTRL-STOP Modifica.. AF La rutina estndar para devolver un carcter para la impresora de la lnea por el Centronics Port. El estado de la impresora es continuamente
- 41 4. ROM BIOS
Probado, por el estndar LPTSTT la rutina, hasta que el impresor se libre. Al carcter le es luego escado para el Centronics Data Port (yo / la O exporto a 91H) y la seal de la LUZ ESTROBOSCPICA del Centronics Status Port (yo / la O exporto a 90H) en breve el punto bajo pulsado. Noto que la rutina del estndar BREAKX se usa para experimentar para la llave de ALTO de CTRL-- si el impresor est ocupado. Si CTRL-STOP es detectado, entonces un cdigo de RETORNO DE CARRO est escrito para el Centronics Data Port, para sonrojar el amortiguador de la lnea de la impresora, y la rutina termina con ustedstedsuador . La direccin ... 0884H El nombre...... LPTSTT La entrada..... Ninguno La salida...... Una = 0 Z y Flag si la impresora ocupado Modifica.. AF La rutina estndar para probar la seal de ocupado Centronics Status Port. Esto justamente implica lectura yo el 90H del puerto de la / O y examinando la condicin de bit 1: 0 = Alistan, 1 = Busy. La direccin ... 088EH El nombre...... COLOQUE La entrada..... = La Columna De La H, = La Fila L La salida...... Ninguno Modifica.. AF, EI La rutina estndar para ajustar el cursor coordina. La fila y coordenadas de la columna son enviadas a la rutina del estndar OUTDO como los parmetros en un ESC, "Y", Row + 1FH, secuencia del + 1FH Column. Noto que la casa BIOS que la colocacin tiene se coordina de 1,1 en vez del 0,0 usado por el BASIC Interpreter. La direccin ... 089DH El nombre...... CNVCHR La entrada..... Un = Carcter La salida...... La bandera Z, Carolina Del Norte = Header; La bandera NZ, C = Graphic; La Bandera Z, = Normalidad C Modifica.. AF La rutina estndar para la que probar, y convertir si es necesario, personajes con encabezados grficos. Los personajes menos de 20H son normalmente interpretados por los conductores del dispositivo de salida como personajes de control. Un cdigo de caracteres en este rango puede ser tratado como un carcter explayable precediendo l con un cdigo grfico (01H) de control del encabezado y aadiendo 40H para su valor. Para que el ejemplo directamente exhibe cdigo de caracteres 0DH, en vez de lo ha interpretado como un retorno de carro, hay que devolver el 01H de dos bytes, 4DH. Esta rutina es usada por los conductores del dispositivo de salida, algo semejante como la rutina del estndar CHPUT, a comprobar para tales secuencias. Si el carcter es un encabezado grfico GRPHED est colocado para 01H y la rutina ultima, entonces GRPHED diferente es puesto en el cero. Si el carcter est fuera del 40H de rango para 5FH, entonces es al que se dej tal cual. Si est dentro este rango, y GRPHED contiene 01H indicando una cada de cabeza grfica previa, entonces se convierte sustrayendo 40H.
- 42 4. ROM BIOS
La direccin ... 08BCH El nombre...... CHPUT La entrada..... Un = Carcter La salida...... Ninguno Modifica.. EI La rutina estndar para devolver un carcter para la pantalla en 40x24 Text Mode o 32x24 Text Mode. SCRMOD es primero a cuadros y, si el VDP estuviera ya sea el Modo Graphics o Mode Multicolor, la rutina termina sin accin. De otra manera el cursor est removido (0A2EH), el carcter descifrado (08DFH) y luego el cursor repuesto (09E1H). Finalmente la colocacin de la columna del cursor es colocada en TTYPOS, pues el uso por la declaracin "estampada", y la rutina terminan. La direccin ... 08DFH Esta rutina es usada por la rutina del estndar CHPUT para descifrar un carcter y tomar la accin apropiada. La rutina del estndar CNVCHR se usa primero para inspeccionar para un carcter grfico, si el carcter es un cdigo del encabezado (01H) que luego la rutina termina sin accin. Si el carcter es uno grfico convertido luego el captulo de desciframiento de cdigo de control es saltado. ESCCNT diferente es al que se dio jaque para ver si un carcter previo (1BH) ESC ha sido recibido, si as es que control transfiere para el procesador de secuencia ESC (098FH). De otra manera el carcter es comprobado para ver si es ms pequeo que 20H, si as es que las transferencias de control para el control codifican procesador (0914H). El carcter es entonces a cuadros para ver si es DEL (7FH), si as es que el control se traslada para lo suprime rutina (0AE3H). Asumir el carcter es explayable que las coordenadas del cursor son tomadas de CSRY y CSRX y colocaron en = Row de registro del par HL, H = Column, L. Estos son luego convertidos a una direccin fsica en el VDP Name Table y el carcter acomodado all (0BE6H). La colocacin de la columna del cursor es entonces incrementada (0A44H) y, asumiendo la columna de la extrema derecha no ha sido excedido, la rutina termina. De otra manera la entrada de la fila en LINTTB, la mesa de terminacin de la lnea, es puesta en el cero para indicar un verso lgico extendido, el nmero de la columna est colocado para 01H y un LF es realizado. La direccin ... 0908H Esta rutina realiza la operacin LF para el procesador de cdigo de control de rutina del estndar CHPUT. La pelea del cursor es incrementada (0A61H) y, asumiendo que la fila mnima no ha sido excedida, la rutina termina. De otra manera la pantalla es enrollada arriba y la fila mnima borrada (0A88H). La direccin ... 0914H ste es el procesador de cdigo de control para la rutina del estndar CHPUT. La mesa en 092FH es registrada para un encuentro con lo
- 43 4. ROM BIOS El cdigo y el control transferido para la direccin asociada. La direccin ... 092FH
Esta mesa contiene los cdigos de control, cada uno con una direccin asociada, reconocida por la rutina del estndar CHPUT: CODIFIQUE PARA FUNCIONAR 07H 1113H TOME LA FORMA DE UNA CAMPANA, salga de a emitir un pip 08H 0A4CH BS, cursor a la izquierda La ETIQUETA 09H 0A71H, el cursor para despus tabular colocacin 0AH 0908H LF, cursor abajo de una fila 0BH 0A7FH DIRJASE HACIA EL BLANCO, cursor para la casa 0CH 077EH FORMFEED, casa y pantalla clara El RETORNO DE CARRO 0DH 0A81H, el cursor para columna del leftmost 1BH 0989H ESC, introduce secuencia de escapada El DERECHO 1CH 0A5BH, el derecho del cursor 1DH 0A4CH SALI, el cursor a la izquierda 1EH 0A57H UP, cursor arriba La PELUSA 1FH 0A61H, la pelusa del cursor. La direccin ... 0953H Esta mesa contiene los cdigos de control ESC, cada uno con una direccin asociada, reconocida por la rutina del estndar CHPUT: CODIFIQUE PARA FUNCIONAR 6AH 077EH ESC, "j", casa y pantalla clara 45H 077EH ESC, "E", casa y pantalla clara 4BH 0AEEH ESC, "K", claro a acabar de lnea 4AH 0B05H ESC, "J", claro a acabar de pantalla 6CH 0AECH ESC, "l", lnea clara 4CH 0AB4H ESC, "L", lnea del inserto 4DH 0A85H ESC, "M", suprime lnea 59H 0986H ESC, "Y", cursor determinado se coordina 41H 0A57H ESC, "un", cursor arriba 42H 0A61H ESC, "B", pelusa del cursor 43H 0A44H ESC, "C", derecho del cursor 44H 0A55H ESC, "D", cursor a la izquierda 48H 0A7FH ESC, "H", casa del cursor 78H 0980H ESC, "x", cursor de cambio 79H 0983H ESC, "y", cursor de cambio La direccin ... 0980H Esta rutina realiza al ESC, "x" operacin para el procesador de cdigo de control de rutina del estndar CHPUT. ESCCNT est listo para 01H para sealar que el siguiente carcter recibido es un parmetro. La direccin ... 0983H Esta rutina realiza al ESC, "y" operacin para el CHPUT - 44 4. ROM BIOS
El decodificador estndar de cdigo de control de rutina. ESCCNT est listo para 02H para sealar que el siguiente carcter recibido es un parmetro. La direccin ... 0986H Esta rutina realiza al ESC ", Y" operacin para el procesador de cdigo de control de rutina del estndar CHPUT. ESCCNT est listo para 04H para sealar que el siguiente carcter recibido es un parmetro. La direccin ... 0989H Esta rutina realiza la operacin ESC para el procesador de cdigo de control de rutina del estndar CHPUT. ESCCNT est listo para FFH para sealar que el siguiente carcter recibido es el segundo carcter de control. La direccin ... 098FH Esto es el procesador de secuencia de rutina del estndar CHPUT ESC. Si ESCCNT contiene a FFH luego el carcter es el segundo carcter de control y las transferencias de control para el control codifican procesador (0919H) para registrar la mesa de cdigo ESC en 0953H. Si ESCCNT contiene 01H luego el carcter es el solo parmetro del ESC, "x" secuencia. Si el parmetro es "4" (34H) luego CSTYLE est listo para 00H resultando en un cursor del bloque. Si el parmetro es "5" (35H) luego CSRSW es determinado para 00H haciendo el cursor normalmente deshabilitado. Si ESCCNT contiene 02H luego el carcter es el solo parmetro en el ESC, "y" secuencia. Si el parmetro es "4" (34H) luego CSTYLE est listo para 01H resultando en un cursor del subrayado. Si el parmetro es "5" (35H) luego CSRSW es determinado para 01H haciendo el cursor normalmente posibilitado. Si ESCCNT contiene 04H luego el carcter es el primer parmetro del ESC, "Y" secuencia y es la coordenada de la fila. El parmetro tiene 1FH sustrado y es colocado en CSRY, ESCCNT es luego decremented para 03H. Si ESCCNT contiene 03H luego el carcter es el segundo parmetro del ESC, "Y" secuencia y es la coordenada de la columna. El parmetro tiene 1FH sustrado y es colocado en CSRX. La direccin ... 09DAH Esta rutina es usada, por la rutina del estndar CHGET por ejemplo, para exteriorizar el carcter del cursor cuando es normalmente deshabilitada. Si CSRSW es poco ponga en el cero, entonces la rutina simplemente termina sin accin, de otra manera el cursor es exhibido (09E6H). La direccin ... 09E1H Esta rutina es usada, por la rutina del estndar CHPUT para
- 45 4. ROM BIOS
El ejemplo, a exteriorizar el carcter del cursor cuando es normalmente posibilitado. Si CSRSW es ponga en el cero, entonces la rutina simplemente termina sin accin. SCRMOD es al que se dio jaque y, si la pantalla estuviera de Modo Graphics o Mode Multicolor, la rutina termina sin accin. De otra manera las coordenadas del cursor son convertidas a una direccin fsica en el VDP Name Table y el personaje ley de esa posicin (0BD8H) e invirti a CURSAV. Los 's de carcter ocho el pixel de byte modela es leda del VDP Character Pattern Table en el amortiguador LINWRK (0BA5H). El patrn del pixel est entonces invertido, todos los ocho bytes si CSTYLE indica un cursor del bloque, slo la raz tres si CSTYLE indica un cursor del subrayado. El patrn del pixel es copiado de regreso a la colocacin para el cdigo de caracteres 255 en el VDP Character Pattern Table (0BBEH). El cdigo de carcter 255 es luego colocado en la posicin del cursor en uso en estos momentos en el VDP Name Table (0BE6H) y la rutina termina. Este mtodo de generar el carcter del cursor, por ah usar cdigo de carcter 255, puede producir efectos curiosos bajo ciertas condiciones. Estos pueden ser demostrados ajusticiando la declaracin de BASIC FOR N = 1 TO 100: ESCRIBA EN LETRAS DE IMPRENTA a CHR$ (255);:DESPUS y luego presionando el cursor arriba de llave. La direccin ... 0A27H Esta rutina es usada, por la rutina del estndar CHGET por ejemplo, para remover el carcter del cursor cuando es normalmente deshabilitada. Si CSRSW es poco ponga en el cero, entonces la rutina simplemente termina sin accin, de otra manera el cursor est removido (0A33H). La direccin ... 0A2EH Esta rutina est usada, por la rutina del estndar CHPUT por ejemplo, .to remueve el carcter del cursor cuando es normalmente posibilitado. Si CSRSW es ponga en el cero, entonces la rutina simplemente termina sin accin. .SCRMOD es al que se dio jaque y, si la pantalla estuviera de Modo Graphics o Mode Multicolor, la rutina termina sin accin. De otra manera las coordenadas del cursor son convertidas a una direccin fsica en el VDP Name Table y el carcter hizo a en CURSAV cumplir escrito que la posicin (0BE6H). La direccin ... 0A44H Esta rutina realiza al ESC, "C" operacin para el procesador de cdigo de control de rutina del estndar CHPUT. Si la coordenada de la columna del cursor est ya en la columna de la extrema derecha, determin por LINLEN, entonces luego la rutina termina sin accin. De otra manera la coordenada de la columna es incrementada y CSRX actualizado. . La direccin ... 0A4CH Esta rutina realiza la operacin BS/LEAVE para el procesador de cdigo de control de rutina del estndar CHPUT. La columna del cursor
- 46 4. ROM BIOS
La coordenada es decremented y CSRX actualizado. Si la coordenada de la columna se ha mudado ms all del leftmost colocacin, entonces es determinada para la colocacin de la extrema derecha, de LINLEN, y una operacin LEVANTADA realizada.
La direccin ... 0A55H Esta rutina realiza al ESC, "D" operacin para el procesador de cdigo de control de rutina del estndar CHPUT. Si la coordenada de la columna del cursor est ya en la colocacin del leftmost, entonces luego la rutina termina sin accin. De otra manera la coordenada de la columna es decremented y CSRX actualizado. La direccin ... 0A57H Esta rutina realiza al ESC, "una" (ARRIBA) operacin para el procesador de cdigo de control de rutina del estndar CHPUT. Si la coordenada de la fila del cursor est ya en la colocacin ms alta, entonces la rutina termina sin accin. De otra manera la coordenada de la fila es decremented y CSRY actualizado. La direccin ... 0A5BH Esta rutina realiza la operacin CORRECTA para el procesador de cdigo de control de rutina del estndar CHPUT. La coordenada de la columna del cursor es incrementada y CSRX actualizado. Si la coordenada de la columna se ha mudado ms all de la colocacin de la extrema derecha, determinada por LINLEN, es determinada para el leftmost, entonces la colocacin (01H) y una operacin DETENIDA realizada. La direccin ... 0A61H Esta rutina realiza al ESC, "B" (ABAJO) operacin para el procesador de cdigo de control de rutina del estndar CHPUT. Si la coordenada de la fila del cursor est ya en lo ms bajo la colocacin, determinada por CRTCNT y CNSDFG (0C32H), entonces luego la rutina termina sin accin. De otra manera la coordenada de la fila es incrementada y CSRY actualizado. La direccin ... 0A71H Esta rutina realiza la operacin de la ETIQUETA para el procesador de cdigo de control de rutina del estndar CHPUT. Los espacios de ASCII son salida (08DFH) hasta que CSRX sea un mltiplo de ocho y uno (las columnas BIOS 1, 9, 17, 25, 33). La direccin ... 0A7FH Esta rutina realiza al ESC, "H" (la CASA) operacin pues el procesador de cdigo de control de rutina del estndar CHPUT, CSRX y CSRY es simplemente se sediment para 1,1. El sistema de coordenadas del cursor ROM BIOS, mientras funcionalmente idntico para tan usado por el BASIC Interpreter, numera las filas de la pantalla de 1 para 24 y las columnas de 1 para 32/40.
- 47 4. ROM BIOS
La direccin ... 0A81H Esta rutina realiza la operacin de RETORNO DE CARRO para el procesador de cdigo de control de rutina del estndar CHPUT, CSRX est simplemente listo a 01H. La direccin ... 0A85H Esta rutina realiza al ESC, "M" funcin para el procesador de cdigo de control de rutina del
estndar CHPUT. Una operacin de RETORNO DE CARRO es primero realizado para ajustar la columna del cursor coordinada para la colocacin del leftmost. El nmero de filas de la fila en uso en estos momentos para la raz de la pantalla es luego determinado, si ste es cero la fila en uso en estos momentos es simplemente borrado (0AECH). La cuenta de la fila se usa primero para desplazar hacia arriba de la pantalla el captulo pertinente de LINTTB, la mesa de terminacin de la lnea, por un byte. Se usa luego para desplazar hacia arriba de la pantalla el captulo pertinente de la pantalla una fila a la vez. Comenzando en la fila debajo de la fila en uso en estos momentos, cada lnea es copiada del VDP Name Table en el amortiguador LINWRK (0BAAH) entonces copiado de regreso a la fila una Table Name ms alto (0BC3H). Finalmente la fila mnima en la pantalla es borrada (0AECH). La direccin ... 0AB4H Esta rutina realiza al ESC, "L" operacin para el procesador de cdigo de control de rutina del estndar CHPDT. Una operacin de RETORNO DE CARRO es primero realizado para ajustar la columna del cursor coordinada para la colocacin del leftmost. El nmero de filas de la fila en uso en estos momentos para la raz de la pantalla es luego determinado, si ste es cero la fila en uso en estos momentos es simplemente borrado (0AECH). La cuenta de la fila se usa primero para desplazar hacia abajo de la pantalla el captulo pertinente de LINTTB, la mesa de terminacin de la lnea, por un byte. Se usa luego para desplazar hacia abajo de la pantalla el captulo pertinente de la pantalla una fila a la vez. Comenzando en la fila penltima de la pantalla, cada lnea es copiada del VDP Name Table en el amortiguador LINWRK (0BAAH), luego copiada de regreso a la fila una Table Name ms bajo (0BC3H). Finalmente la fila en uso en estos momentos es borrada (0AECH). La direccin ... 0AE3H Esta rutina se usa para realizar la operacin DEL para el procesador de cdigo de control de rutina del estndar CHPUT. Una operacin IZQUIERDA es primero realizado. Si esto no puede ser completado, porque el cursor est ya en la colocacin de la casa, entonces luego la rutina termina sin accin. De otra manera a un espacio le es escrito para el VDP Name Table en la posicin fsica del cursor (0BE6H). La direccin ... 0AECH Esta rutina realiza al ESC, "l" operacin para el procesador de cdigo de control de rutina del estndar CHPUT. La coordenada de la columna del cursor es determinada para 01H y control cae en el ESC, "K" rutina.
- 48 4. ROM BIOS
La direccin ... 0AEEH Esta rutina realiza al ESC, "K" operacin para el procesador de cdigo de control de rutina del estndar CHPHT. La entrada de la fila en LINTTB, la mesa de terminacin de la lnea, es primer poco cero hecho para sealar que la lnea lgica no est extendida (0C29H). Las coordenadas del cursor son convertidas a una direccin fsica (0BF2H) en el VDP Name Table y el VDP para escribe por la rutina del estndar SETWRT. A los espacios les es luego directamente para el VDP Data Port hasta la columna de la extrema derecha, est resuelto por LINLEN, es alcanzado. La direccin ... 0B05H
Esta rutina realiza al ESC, "J" operacin para el procesador de cdigo de control de rutina del estndar CHPUT. Una operacin ESC, "K" es realizada en filas sucesivas, comenzando con lo actual, hasta que la raz de la pantalla es alcanzada. La direccin ... 0B15H El nombre...... ERAFNK La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, DE, EI La rutina estndar para revolver el mostrador de la llave de funcin completamente. CNSDFG es primero puesto en el cero y, si el VDP estuviera de Modo Graphics o Mode Multicolor, la rutina termina sin ms accin. Si el VDP est de Modo del 40x24 Text o 32x24 Text Mode la ltima fila en la pantalla es entonces borrado (0AECH). La direccin ... 0B26H El nombre...... FNKSB La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, EI La rutina estndar para exteriorizar el despliegue de la llave de funcin si es posibilitado. Si CNSDFG es ponga en el cero, entonces la rutina termina sin accin, el control diferente cae en la rutina del estndar DSPFNK.. La direccin ... 0B2BH El nombre...... DSPFNK La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, BC, DE, EI La rutina estndar para revolver el mostrador de la llave de funcin adelante. CNSDFG est listo para FFH y, si el VDP estuviera de Modo Graphics o Mode Multicolor, la rutina termina sin ms accin. De otra manera la coordenada de la fila del cursor es comprobada y, si el cursor estuviera en la ltima fila de la pantalla, un LF que el cdigo (0AH) emiti para la rutina del estndar OUTDO para enrollar la pantalla arriba.
- 49 4. ROM BIOS
El par de registro HL est luego colocado a apuntar ya sea la funcin no desviada o desviada forma una serie en la Workspace Area dependiendo en ya sea la tecla de maysculas se aprieta. LINLEN tiene cuatro sustrados, para permitir un mnimo de espacio del mismo entre campos, y est en desacuerdo a las cinco para determinar el tamao del campo para cada cuerda. Los personajes sucesivos son luego tomados de cada uno cuerda de funcin, comprobadas para encabezados grficos por la rutina del estndar CNVCHR y estn posado en el amortiguador LINWRK hasta que la cuerda est agotada o la zona est llena. Cuando todos los cinco instrumentos de cuerda son completados el amortiguador LINWRK es escrito para la ltima fila en el VDP Name Table (0BC3H). La direccin ... 0B9CH Esta rutina est usada por el despliegue de la llave de funcin rutinas estndar relatadas. Los
contenidos de A de registro son colocados en CNSDFG que luego SCRMOD prob y que Flag Carolina Del Norte regres si la pantalla est de Modo Graphics o el Multicolor Mode. La direccin ... 0BA5H Esta rutina emula ocho bytes del VDP VRAM en el amortiguador LINWRK, el VRAM a la direccin fsica est suministrado en par de registro HL. La direccin ... 0BAAH Esta rutina copia una fila completa de personajes, con el largo determinado por LINLEN, del VDP VRAM en el amortiguador LINWRK. La fila del cursor a la coordenada est suministrada en L de registro. La direccin ... 0BBEH Esta rutina emula ocho bytes del amortiguador LINWRK en el VDP VRAM, el VRAM a la direccin fsica est suministrado en par de registro HL. La direccin ... 0BC3H Esta rutina copia una fila completa de personajes, con el largo determinado por LINLEN, del amortiguador LINWRK en el VDP VRAM. La fila del cursor a la coordenada est suministrada en L de registro. La direccin ... 0BD8H Esta rutina lee un solo byte del VDP VRAM en C de registro. La columna a la coordenada est suministrada en registro H, la fila coordinada en L de registro. La direccin ... 0BE6H Esta rutina convierte un par de coordenadas de la pantalla, la columna en H de registro y la fila en registro L, en una direccin fsica en el VDP Name Table. Esta direccin es devuelta adentro
- 50 4. ROM BIOS El par de registro HL. La coordenada de la fila es primera multiplicado por treinta y dos o cuarenta, dependiendo del modo de la pantalla, y aadido para la coordenada de la columna. Esto se agrega luego a la direccin bajo Table Name, tomado de NAMBAS, para producir una direccin inicial. Por la anchura variable de la pantalla, tan contenido en LINLEN, un offset adicional tiene que agregarse para la direccin inicial para conservar la regin activa apenas puesta en el centro dentro de la pantalla. La diferencia entre el nmero "verdadero" de personajes por fila, treinta y dos o cuarenta, y la anchura coetnea son disminuidas a la mitad y luego redondeadas arriba para producir el offset de la izquierda. Para una mquina UK, con una treinta y siete anchura de carcter en 40x24 Text Mode, esto resultar en dos carcteres sin uso en el lado de la izquierda y uno a la derecha. La IMPRESIN de declaracin (41-WID) \2, dnde WID es cualquier anchura de la pantalla, exteriorizar el offset de la columna de la izquierda en 40x24 Text Mode. Un programa completo de BASIC que emula esta rutina es dado debajo:
10 CPR = 40:NAM=BASE (0):WID=PEEK (y HF3AE) 20 SCRMD=PEEK (Y HFCAF):IF SCRMD = 0 LUEGO 40 30 CPR = 32:NAM=BASE (5):WID=PEEK (y HF3AF) 40 LH = (CPR 1-WID) \2 50 ADDR=NAM * CPR + (COL-1) + (ROW-1) + LH Este programa es diseado pues la FILA y el sistema de coordenadas COL usado por los ROM BIOS donde la casa sea 1,1. Lnea 50 puede ser simplificada, quitando lo "- 1" factores, si BASIC Interpreter coordnese, entonces el sistema debe ser usado. La direccin ... 0C1DH Esta rutina calcula el discurso de entrada de una fila en LINTTB, la mesa de terminacin de la lnea. La fila a la coordenada est suministrada en L de registro y que la direccin devolvi en par de registro Delaware. La direccin ... 0C29H Esta rutina hace la entrada de una fila en el poco cero LINTTB cundo introducida en 0C29H y el cero estando entrado en 0C2AH. La fila a la coordenada est suministrada en L de registro. La direccin ... 0C32H Esta rutina devuelve el nmero de filas en la pantalla en A de registro. Normalmente devolver veinticuatro si el despliegue de la llave de funcin es deshabilitado y veintitres si es posibilitado. Noto que el tamao de la pantalla es determinado por CRTCNT y puede ser modificado con una declaracin de BASIC, PINCHAZO y HF3B1H, 14:PANTALLA 0 por ejemplo. - 51 4. ROM BIOS La direccin ... 0C3CH El nombre...... KEYINT La entrada..... Ninguno La salida...... Ninguno Modifica.. EI La rutina estndar para procesar a Z80 interrumpe, estos son generados por el VDP una vez cada 20 ms en un UK labran a mquina. El VDP Status Register es primera lectura y bit 7 a cuadros para asegurar que ste es un marco tasa interrumpa, en caso de que no la rutina termine sin accin. Los contenidos del Status Register son ahorrados en STATFL y mordieron 5 comprobado para la coincidencia de bloque de objetos movibles. Si el Coincidence Flag es activo luego la entrada pertinente en TRPTBL est actualizada (0EF1H). INTCNT, el "intervalo" mueble mostrador, es luego decremented. Si esto ha cumplido ponga en el cero, entonces la entrada pertinente en TRPTBL es actualizada (0EF1H) y el mueble mostrador vuelto a arrancar con los contenidos de INTVAL. El MOMENTITO, el "tiempo" el mueble mostrador, es entonces incrementado. Este mueble mostrador justamente se enrolla aproximadamente cero cuando se derrama. MUSICF es examinado para determinar si cualquier de lo tres msica hace cola generado por el "juego" declaracin es activo. Para cada cola activa la rutina del dequeueing (113BH) se siente llamada a ir a traer el siguiente paquete de msica y escribir ella para el PSG.
SCNCNT es luego decremented para determinar si una palanca de control y un teclado escudrian es requerido, en caso de que no lo interrumpe manipulador termina sin ms accin. As de en direccin opuesta est acostumbrado a aumentar rendimiento especfico y minimizar problemas del keybounce asegurando eso uno escudrian es slo efectuado cada tres interrumpen. Asumiendo uno escudrie es conector requerido de la palanca de control 1 es seleccionado y los aicos dos Trigger leyeron (120CH), seguidos por los aicos dos Trigger de conector de la palanca de control 2 (120CH) y la llave de ESPACIO de fila 8 del teclado (1226H). Estas cinco entradas, que es todo relacionado con el "STRIG" declaracin, est combinado en un solo byte donde 0 = Presionado, 1 Not presionado:
76543210 + La Alegra 2 La Alegra 2 La Alegra 1 Alegra 1 0 0 0 El Espacio Trg.B Trg.A Trg.B Trg.A + Figura 35: "STRIG" Entradas
Esta lectura es comparada con la previa, est sujeto en TRGFLG, para producir un byte activo de transicin y TRGFLG est actualizado con la lectura nueva. El byte activo de transicin es normalmente cero pero contiene uno 1 en cada colocacin donde una transicin de no en apuros para en apuros ha ocurrido. Este byte activo de transicin - 52 4. ROM BIOS
Es intercambiado fuera poco a poco y la entrada pertinente en TRPTBL actualizado (0EF1H) para cada dispositivo activo. Uno completo escudria de la matriz del teclado es entonces realizado para identificar depresiones cruciales y nuevas, ms encontradas es traducido a cdigos cruciales y est posado en KEYBUF (0D12H). Se encuentra que si KEYBUF est vaco al final de este proceso REPCNT es decremented para ver si lo autorepito que el retraso ha caducado, en caso de que no la rutina termina. Si el perodo de retraso ha caducado, entonces REPCNT es vuelto a arrancar con el ayuno repite valor (60 ms), el mapa del teclado OLDKEY es en el que se repuso las iniciales y el teclado escudriado otra vez (0D4EH). Cualquier claves que se aprietan continuamente se notarn como transiciones nuevas durante esto escudrie. Noto que las llaves slo autorepetirn mientras un programa de aplicacin entretiene a KEYBUF vaco leyendo a personajes. Lo interrumpe a que el manipulador entonces termina. La direccin ... 0D12H Esta rutina funciona uno completo escudrie de todas las once filas de la matriz del teclado para lo interrumpe manipulador. Cada uno de las once filas son ledas adentro por el PPI y estn posado en ascender ' haga el pedido en NEWKEY. ENSTOP es entonces a cuadros para ver si principios calientes es facultado. Si sus contenidos son poco cero y el CDIGO de llaves, entonces GRAPH, CTRL y CAMBIO son transferencias de control en apuros para el BASIC Interpreter (409BH) por la rutina del estndar CALBAS. Esta facilidad es til como aun un programa de cdigo de la mquina puede ser terminado tan largo como lo interrumpe manipulador corre.
Los contenidos de NEWKEY son con los que se compar los previos escudrie contenido en OLDKEY. Si cualquier cambio en todo ha ocurrido, entonces REPCNT est cargado con la inicial autorepite retraso (780 ms). Cada uno hace avanzar con el remo 1, la lectura de NEWKEY es entonces comparada con la previa, est sujeto en OLDKEY, para producir un byte activo de transicin y OLDKEY est actualizado con la lectura nueva. El byte activo de transicin es normalmente cero pero contiene uno 1 en cada colocacin donde una transicin de no en apuros para en apuros ha ocurrido. Si la fila contiene cualquier transiciones stas son descifradas y colocadas en KEYBUF como cdigos cruciales (0D89H). Cuando todas las once filas han sido completadas la rutina inspecciona si hay cualquier personajes en KEYBUF, sustrayendo a GETPNT de PUTPNT, y termina. La direccin ... 0D6AH El nombre...... CHSNS La entrada..... Ninguno La salida...... La bandera NZ si los personajes en KEYBUF Modifica.. AF, EI La rutina estndar a comprobar si cualquier personajes del teclado est lista. Si la pantalla est de Modo Graphics o el Multicolor Mode luego GETPNT es sustrado de PUTPNT (0D62H) y la rutina termina. Si la pantalla est de Modo del 40x24 Text o 32x24 Text Mode la condicin de la tecla de maysculas es tambin examinado y la funcin que la llave el despliegue actualiz, entonces por la rutina del estndar DSPFNK, si se ha alterado.
- 53 4. ROM BIOS
La direccin ... 0D89H Esta rutina se reduce a cada bit activo en un byte de transicin de la fila del teclado un cdigo crucial. Un bit se convierte primero en un nmero crucial determinado por su colocacin en la matriz del teclado:
+ 7 6 5 4 3 2 1 0 Row 0 (07H) (06H) (05H) (04H) (03H) (02H) (01H) (00H) + ; ] [ \ = - 9 8 Row 1 (0FH) (0EH) (0DH) (0CH) (0BH) (0AH) (09H) (08H) + BA. , ` ' Fila 2 (17H) (16H) (15H) (14H) (13H) (12H) (11H) (10H) + La J Yo La Fila HGFEDC 3 (1FH) (1EH) (1DH) (1CH) (1BH) (1AH) (19H) (18H) + La Fila De Interrogacin QPONMLK 4 (27H) (26H) (25H) (24H) (23H) (22H) (21H) (20H) + ZYXWVUTS Haga Avanzar Con El Remo 5 (2FH) (2EH) (2DH) (2CH) (2BH) (2AH) (29H) (28H)
+ F3 F2 F1 CODECAPGRAPHCTRLSHIFT Row 6 (37H) (36H) (35H) (34H) (33H) (32H) (31H) (30H) + CRSELBSSTOPTABESC F5 F4 Row 7 (3FH) (3EH) (3DH) (3CH) (3BH) (3AH) (39H) (38H) + RIGHTDOWNUPLEAVEDELINHOMESPACE Haga Avanzar Con El Remo 8 (47H) (46H) (45H) (44H) (43H) (42H) (41H) (40H) + 4 3 2 1 0 Row 9 (4FH) (4EH) (4DH) (4CH) (4BH) (4AH) (49H) (48H) + . , - 9 8 7 6 5 Row 10 (57H) (56H) (55H) (54H) (53H) (52H) (51H) (50H) + 7 6 5 4 3 2 1 0 Column Figura 36: Teclee Nmeros
- 54 4. ROM BIOS El nmero crucial se convierte luego en un cdigo crucial y colocado en KEYBUF (1021H). Cuando todos los ocho aicos posibles han sido procesados la rutina termina. La direccin ... 0DA5H Esta mesa contiene los cdigos cruciales de 00H crucial de nmeros para 2FH para combinaciones diversas de las llaves de control. Una entrada de cero en la mesa quiere decir que ningn cdigo crucial se producir cuando esa llave se aprieta: 37H 36H 35H 34H 33H 32H 31H 30H Row 0 3BH 5DH 5BH 5CH 3DH 2DH 39H 38H Row 1 62H 61H 9CH 2FH 2EH 2CH 60H 27H Row NORMAL 2 6AH 69H 68H 67H 66H 65H 64H 63H Row 3 72H 71H 70H 6FH 6EH 6DH 6CH 6BH Row 4 7AH 79H 78H 77H 76H 75H 74H 73H Row 5 26H 5EH 25H 24H 23H 40H 21H 29H Row 0 3AH 7DH 7BH 7CH 2BH 5FH 28H 2AH Row 1 CAMBIO 42H 41H 9CH 3FH 3EH 3CH 7EH 22H Row 2 4AH 49H 48H 47H 46H 45H 44H 43H Row 3 52H 51H 50H 4FH 4EH 4DH 4CH 4BH Row 4 5AH 59H 58H 57H 56H 55H 54H 53H Row 5
FBH F4H BDH EFH BAH ABH ACH 09H Row 0 06H 0DH 01H 1EH F1H 17H 07H ECH Row 1 GRFICA 11H C4H 9CH 1DH F2H F3H BBH 05H Row 2 C6H DCH 13H 15H 14H CDH C7H BCH Row 3 18H CCH DBH C2H 1BH 0BH C8H DDH Row 4 0FH 19H 1CH CFH 1AH C0H 12H D2H Row 5 00H F5H 00H 00H FCH FDH 00H 0AH Row 0 04H 0EH 02H 16H F0H 1FH 08H 00H Row 1 CAMBIO 00H FEH 9CH F6H AFH AEH F7H 03H Row 2 GRFICA CAH DFH D6H 10H D4H CEH C1H FAH Row 3 A9H CBH D7H C3H D3H 0CH C9H DEH Row 4 F8H AAH F9H D0H D5H C5H 00H D1H Row 5 E1H E0H 98H 9BH BFH D9H 9FH EBH Row 0 B7H DAH EDH 9CH E9H EEH 87H E7H Row 1 CDIGO 97H 84H 9CH A7H A6H 86H E5H B9H Row 2 91H A1H B1H 81H 94H 8CH 8BH 8DH Row 3 93H 83H A3H A2H A4H E6H B5H B3H Row 4 85H A0H 8AH 88H 95H 82H 96H 89H Row 5 00H 9DH 9CH BEH 9EH ADH D8H Row 0 B6H EAH E8H 00H 00H 00H 80H E2H Row 1 CAMBIO 00H 8EH 9CH A8H 00H 8FH E4H B8H Row 2 CDIGO 92H 00H B0H 9AH 99H 00H 00H 00H Row 3 00H E3H 00H A5H 00H B4H B2H Row 4 00H 00H 00H 00H 90H 00H 00H Row 5 7 6 5 4 3 2 1 0 Column
- 55 4. ROM BIOS
La direccin ... 0EC5H Controle transferencias para esta rutina, de 0FC3H, para completar desciframiento de las cinco llaves de funcin. La entrada pertinente en FNKFLG es primero a cuadros para determinar si la clave es con la que se asoci uno "en KEY GOSUB" declaracin. Si es as, y con tal que CURLIN muestra el BASIC Interpreter estar de modo de programa, la entrada pertinente en TRPTBL es actualizada (0EF1H) y la rutina termina. Si se amarr a la llave uno "en KEY GOSUB" declaracin, o si el Interpreter est directo modo, entonces la cadena de caracteres asociada con la llave de funcin es devuelta en lugar de eso. El nmero crucial est mu ltiplicado por diecisis, como cada cuerda es diecisis personajes largos, y aadidos para la direccin de puesta en marcha de los instrumentos de cuerda de la llave de funcin en el Workspace Area. Los personajes secuenciales son luego tomados de la cuerda y estn posado en KEYBUF (0F55H) hasta que el exterminador de byte de cero sea alcanzado. La direccin ... 0EF1H Esta rutina se usa para actualizar la entrada de un dispositivo en TRPTBL cuando ha producido un programa de BASIC interrumpa. En las proposiciones del par de registro de entrada HL para el byte de estado del dispositivo en la mesa. El bit 0 del byte de estado es primer a lo que se dio jaque, si el dispositivo no est encendido luego la rutina termina sin accin. El bit 2, la
bandera de acontecimiento, es entonces a cuadros. Si esto est ya listo luego la rutina termina, de otra manera es determinada para sealar que un acontecimiento ha ocurrido. El bit 1, el "alto" bandera, es entonces a cuadros. Si el dispositivo est detenido luego la rutina termina sin ms accin. ONGSBF diferente es incrementado para hacer seales a para el Interpreter Runloop que el acontecimiento ahora debera ser tramitado. La direccin ... 0F06H Este captulo del decodificador crucial procesa la llave de la CASA slo. La condicin de la tecla de maysculas es determinada por fila 6 de NEWKEY y el cdigo crucial para A CASA (0BH) o CLS (0CH) colocado en KEYBUF (0F55H) consecuentemente. La direccin ... 0F10H Este captulo de los procesos del decodificador del teclado afina 30H de nmeros para 57H con la excepcin de la GORRA, F1 para las llaves F5, de ALTO y de la CASA. El nmero crucial se usa simplemente para buscar el cdigo crucial en la mesa en 1033H y ste son luego colocados en KEYBUF (0F55H). La direccin ... 0F1FH Este captulo del decodificador del teclado procesa la llave MUERTA encontrada en mquinas europeas MSX. En UK labra a mquina la llave en fila 2, columna 5 siempre genera el cdigo de la llave de libra (9CH) exteriorizado en la mesa en 0DA5H. En mquinas del europeo esta mesa tendr el cdigo de la llave FFH en las mismas posiciones. Este cdigo crucial slo sirve de una bandera para sealar que la siguiente llave en apuros, si eso
- 56 4. ROM BIOS
Es un vocal, debera ser modificado para producir un carcter acentuado de grficos. La condicin del CAMBIO y el CDIGO las llaves es determinada por fila 6 de NEWKEY y una de lo siguiente colocado en KANAST: El 01H = DEAD, 02H DEAD+SHIFT, 03H DEAD+CODE, 04H DEAD+SHIFT+CODE. La direccin ... 0F36H Este captulo del decodificador del teclado procesa la llave de la GORRA. La condicin coetnea de CAPST es invertida y el control cae en la rutina del estndar CHGCAP. La direccin ... 0F3DH El nombre...... CHGCAP La entrada..... Uno = En / El Anticuado Switch La salida...... Ninguno Modifica.. AF La rutina estndar para dar vuelta al Caps Lock LLEV LA DELANTERA o completamente como determin por los contenidos de A de registro: El 00H = On, NZ = Off. El LED est modificado usando la facilidad mordida del set /reanudacin del PPI Mode Port. Como CAPST no se vara esta rutina no afecta a los personajes producidos por el teclado. La direccin ... 0F46H
Este captulo del decodificador del teclado procesa la llave de ALTO. La condicin de la llave CTRL es determinada por fila 6 de NEWKEY y el cdigo crucial para el ALTO (04H) o CTRL/STOP (03H) producido segn el caso. Si el cdigo CTRL/STOP se produce es emulado para INTFLG, entonces para el uso por la rutina del estndar ISCNTC, y luego colocado en KEYBUF (0F55H). Si el cdigo de ALTO se produce es tambin copiado para INTFLG pero no es colocado en KEYBUF, entonces en lugar de eso slo un chasquido es generado (0F64H). Esto quiere decir que un programa de aplicacin no puede leer el cdigo de la llave de ALTO por las rutinas del estndar ROM BIOS. La direccin ... 0F55H Este captulo del decodificador del teclado coloca un cdigo crucial en KEYBUF y genera un chasquido audible. La direccin correcta en el amortiguador del teclado es primero tomada de PUTPNT y el cdigo acomodado all. El discurso es entonces incrementada (105BH). Si se ha enrollado alrededor y ha alcanzado a GETPNT, entonces luego la rutina termina sin ms accin como el amortiguador del teclado est lleno. PUTPNT diferente est actualizado con la direccin nueva. CLIKSW y CLIKFL son luego ambos dado jaque para determinar si un chasquido es precisado. CLIKSW es un general posibilite / lisia interruptor mientras CLIKFL est acostumbrado a impedir chasquidos mltiples cuando las llaves de funcin se aprietan. Asumir un chasquido es precisado que la salida Crucial Click es determinada por el PPI Mode Port y, despus de un retraso de 50 s, el control cae en la rutina del estndar CHGSND.
- 57 4. ROM BIOS
La direccin ... 0F7AH El nombre...... CHGSND La entrada..... Uno = En / El Anticuado Switch La salida...... Ninguno Modifica.. AF La rutina estndar a ajustar o poner a cero la salida Crucial Click por el PPI Mode Port: El 00H = Reanud, NZ = Set. Esta salida audia es CORRIENTE ALTERNA enganchada as es que las polaridades absolutas no deberan ser tomadas tambin seriamente. La direccin ... 0F83H Este captulo de los procesos del decodificador del teclado afina 00H de nmeros para 2FH. La condicin del CAMBIO, GRFICA y CDIGO las llaves es determinada por fila 6 de NEWKEY y combinada con el nmero crucial formar una direccin de bsqueda en la mesa en 0DA5H. El cdigo crucial es luego tomado de la mesa. Si es ponga en el cero, entonces la rutina termina sin ms accin, si es control FFH transfiere para el procesador (0F1FH) TOTALMENTE crucial. Si el cdigo est en el 40H de rango para 5FH o 60H para 7FH y la llave CTRL es presionado luego el cdigo correspondiente de control es colocado en KEYBUF (0F55H). Si el cdigo est en el 01H de rango para 1FH luego un cdigo grfico (01H) del encabezado es primero colocado en KEYBUF (0F55H) seguido por el cdigo con 40H aadido. Si el cdigo est en el 61H de rango para 7BH y CAPST seala que el cerrojo de gorras est encendido luego es convertido a caja alta sustrayendo 20H. Dado que KANAST contiene cero, como siempre har en UK labra a mquina, luego el cdigo crucial es colocado en KEYBUF (0F55H) y la rutina termina. En MSX europeo las mquinas, con una llave MUERTA en lugar de una llave de libra, luego la llave codifica correspondiente a los vocales uno, e, yo, o, u puede estar adicionalmente modificada en cdigos de grficos.
La direccin ... 0FC3H Este captulo del decodificador del teclado procesa las cinco llaves de funcin. La condicin de la tecla de maysculas es examinada por fila 6 de NEWKEY y cinco se sumaron al nmero crucial si se aprieta. El control luego se traslada para 0EC5H para completar procesamiento. La direccin ... 1021H Esta rutina registra que la mesa en 1B97H para determinar cul grupo de llaves el nmero crucial suministr en C de registro pertenece para. La direccin asociada es luego tomada de la mesa y control transferida para ese captulo del decodificador del teclado. Noto que la mesa misma es de hecho moteada en el centro de la rutina del estndar OUTDO como resultado de las modificaciones hechas al ROM japons. La direccin ... 1033H Esta mesa contiene los cdigos cruciales de 30H crucial de nmeros para 57H aparte de la GORRA especial de llaves, F1 para F5, el ALTO y la CASA. uno
- 58 4. ROM BIOS La entrada de cero en la mesa quiere decir que ningn cdigo crucial se producir cuando esa llave se aprieta: 00H 00H 00H 00H 00H 00H 00H Row 6 0DH 18H 08H 00H 09H 1BH 00H 00H Row 7 1CH 1FH 1EH 1DH 7FH 12H 0CH 20H Row 8 34H 33H 32H 31H 30H 00H 00H 00H Row 9 2EH 2CH 2DH 39H 38H 37H 36H 35H Row 10 7 6 5 4 3 2 1 0 Column La direccin ... 105BH Esta rutina simplemente pone en el cero a KANAST y luego transfiere control para 10C2H. La direccin ... 1061H Esta mesa contiene los carcteres de grficos que reemplazan los vocales una, e, yo, o, u en mquinas europeas. La direccin ... 10C2H Esta rutina incrementa el consejo del amortiguador del teclado, ya sea PUTPNT o GETPNT, abastecida en par de registro HL. Si el puntero luego excede el fin del teclado amortiguador, entonces es envuelto de regreso al comienzo. La direccin ... 10CBH El nombre...... CHGET La entrada..... Ninguno
La salida...... Un = Character de teclado Modifica.. AF, EI La rutina estndar para ir a traer a un personaje del amortiguador del teclado. El amortiguador es primero a cuadros para ver si ya contiene un carcter (0D6AH). En caso de que no el cursor se enciende (09DAH), el amortiguador comprobado repetidamente hasta que un carcter aparece (0D6AH) y luego el cursor se desactiv (0A27H). El carcter es tomado del amortiguador usando a GETPNT que es entonces incrementado (10C2H). La direccin ... 10F9H El nombre...... CKCNTC La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, EI La rutina estndar a comprobar si el CTRL-STOP o DETENER llaves se han apretado. Es usado por el BASIC Interpreter dentro de declaraciones intensivas en procesador, algo semejante como "la ESPERA" y "el CRCULO", a comprobar para la terminacin de programa. El par de registro HL es primero control puestos en el cero y luego transferidos para la rutina del estndar ISCNTC. Cuando el Interpreter corre el par de registro HL normalmente contiene la direccin del carcter coetneo en el BASIC - 59 4. ROM BIOS
El texto de programa. Si ISCNTC es CTRL-STOP terminado esta direccin ser colocado en OLDTXT por el "alto" manipulador de declaracin (63E6H) para el uso por un posterior "CONT" declaracin. Poner en el cero par de registro HL de antemano da seas de para el "CONT" manipulador que la terminacin ocurri dentro de una declaracin y eso surgir uno "no puede mantener" error si la continuacin es intentada. La direccin ... 1102H El nombre...... WRTPSG La entrada..... Un byte = Register de nmero, E = Data La salida...... Ninguno Modifica.. EI La rutina estndar para escribir un byte de datos para cualquier de los registros diecisis PSG. El nmero de seleccin de a registro le es escrito para el PSG Address Port y el byte de datos escrito para el PSG Data Write Port. La direccin ... 110EH El nombre...... RDPSG La entrada..... Un nmero = Register La salida...... Un byte = Data ley de PSG Modifica.. uno La rutina estndar para leer un byte de datos de cualquier de los registros diecisis PSG. El nmero de seleccin de a registro le es escrito para el PSG Address Port y el byte de datos ledo del PSG Data Ley a Port. La direccin ... 1113H El nombre...... EMITA UN PIP La entrada..... Ninguno
La salida...... Ninguno Modifica.. AF, BC, E, EI La rutina estndar para producir un pip por el PSG. La A del canal est colocada para producir un tono de 1316Hz luego posibilitado con una amplitud de siete. Despus de un retraso de 40 ms las transferencias de control para la rutina del estndar GICINI para reinicializar el PSG. La direccin ... 113BH Esta rutina es usada por ah lo interrumpe manipulador para reparar una cola de msica. Como hay tres de estos, cada alimentacin un canal PSG, la cola a ser reparados es especificada suministrando su nmero en A de registro: 0 = VOICAQ, 1 = VOICBQ Y 2 = VOICCQ. Cada cuerda en un "juego" declaracin es traducida a una serie de paquetes de datos por el BASIC Interpreter. Estos son colocados en la cola apropiada seguidos por un fin de byte de datos (FFH). La tarea de dequeueing los paquetes, descifrndolos y colocar al PSG queda para lo interrumpe manipulador. El Interpreter est as en libertad para proceder inmediatamente hacia la siguiente declaracin sin tener que esperar notas para terminar.
- 60 4. ROM BIOS Los primeros dos bytes de cualquier paquete especifican su cuenta de byte y duracin. Los tres aicos ms significativos del primer byte especifican el nmero de bytes siguiendo el encabezado en el paquete. El resto del encabezado especifica la duracin de acontecimiento en 20 unidades ms. Esta cuenta de duracin determina cunto tiempo ser antes de que el siguiente paquete sea ledo de la cola. 76543210 + El byte Count Duration (MSB) + La duracin (LSB) + Figura 37: El paquete Header El encabezado del paquete puede ser seguido por el cero o ms bloques, en cualquier orden, conteniendo informacin de frecuencia o de amplitud:
76543210 + X1x xxxx + El sobre Frequency (MSB) + El sobre Frequency (LSB) + El sobre Block 76543210 + 1 x Mode AmplitudeShape + La amplitud Block Figura 38: El Bloque Del Paquete Escribe A Mquina
La primera parte de rutina halla el mueble mostrador de duracin en uso en estos momentos en el amortiguador pertinente (VCBA, VCBB o VCBC) de voz por el GETVCP
- 61 4. ROM BIOS
Los decrementos y rutina estndar eso. Si el mueble mostrador ha cumplido cero luego el siguiente paquete debe ser ledo de la cola, de otra manera la rutina termina. El nmero de la cola es colocado en QUEUEN y un byte ley de la cola (11E2H). Esto es entonces a cuadros para ver si es el fin de marca de datos (FFH), si as es que la cola termina (11B0H). De otra manera la cuenta de byte es colocada en C de registro y la duracin MSB en el amortiguador pertinente de voz. El segundo byte es lectura (11E2H) y la duracin que LSB coloc en el amortiguador pertinente de voz. La cuenta de byte es entonces examinada, si no hay bytes para seguir el encabezado del paquete que la rutina termina. Los bytes sucesivos diferentes son leda de la cola, y la accin apropiada tomado, hasta que la cuenta de byte est agotada. Si un bloque de frecuencia es encontrado luego a un segundo byte le es ledos y ambos bytes para Registros PSG 0 y 1, 2 y 3 o 4 y 5 a merced del nmero de la cola. Si un bloque de amplitud es encontrado, entonces el Amplitude y aicos a Mode les es para PSG Registers 8, 9 o 10 a merced del nmero de la cola. Si el Mode mordido tiene 1 aos de edad, entonces hacer una seleccin modul en vez de la amplitud fija, luego al byte le es tambin para PSG Register 13 para colocar la forma del sobre. Si un bloque del sobre es encontrado, o si mordi 6 de un bloque de amplitud son determinados, entonces luego unos adicionalmente dos bytes son ledos de la cola y escrito para Registros PSG 11 y 12. La direccin ... 11B0H
Esta rutina es usada cuando un fin de marca de datos (FFH) es encontrado en una de las tres colas de msica. Un valor de amplitud de a cero le es para PSG Register 8 9 o 10, dependiendo del nmero de la cola, para cerrar el canal. El bit del canal en MUSICF es entonces vuelto a arrancar y el control cae en la rutina del estndar STRTMS. La direccin ... 11C4H El nombre...... STRTMS La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, HL La rutina estndar usada por el "juego" manipulador de declaracin para iniciar dequeueing de msica por ah lo interrumpe manipulador. MUSICF es primero examinado, si cualquier canales ya ejecutan la rutina termina sin accin. PLYCNT es luego decremented, si hay ningn ms "juego" forma una serie al que se hizo cola arriba de la rutina termina. De otra manera los tres muebles mostradores de duracin, en VCBA, VCBB y VCBC, estn listos para 0001H, a fin de que el primer paquete del grupo nuevo ser sacado de la cola lo siguiente interrumpa, y MUSICF est listo para 07H para habilitar todos los tres canales.
- 62 4. ROM BIOS La direccin ... 11E2H Este registro de cargas de rutina UNO con el nmero actual de la cola, de QUEUEN, y luego lecturas un byte de eso hace cola (14ADH). La direccin ... 11EEH El nombre...... GTSTCK La entrada..... Un = Joystick Idaho (0, 1 o 2) La salida...... Un cdigo de colocacin = Joystick Modifica.. AF, B, DE, HL, EI La rutina estndar para leer la colocacin de una palanca de control o las cuatro llaves del cursor. Si el Idaho abastecido es ponga en el cero, entonces la condicin de las llaves del cursor es leda por PPI Port B (1226H) y se convierte para un cdigo de colocacin usando la mesa de bsqueda en 1243H. El conector diferente de la palanca de control 1 o 2 es ledo (120CH) y los cuatro aicos de direccin mutaron para un cdigo de colocacin usando la mesa de bsqueda en 1233H. Los cdigos devueltos de colocacin son: 1 82 \/ \/ 7 ---- 0 ---- 3 /\ /\ 64 5 La direccin ... 120CH
Esta rutina lee el conector de la palanca de control especificado por los contenidos de A de registro: 0 Connector 1, 1 = Connector 2. La corriente contenta de PSG Register 15 es leda en luego espalda escrita con el bit Selecto Joystick apropiadamente se sedimenta. PSG Registre 14 son entonces ledos en A de registro (110CH) y la rutina termina. La direccin ... 1226H Esta fila de lecturas de rutina 8 de la matriz del teclado. Los contenidos coetneos de C PPI Port son ledos en luego espalda escrita con el cuatro set de aicos Keyboard Row Select para fila 8. Las entradas de la columna son entonces ledas en A de registro de B PPI Port. La direccin ... 1253H El nombre...... GTTRIG La entrada..... Un = Trigger Idaho (0, 1, 2, 3 o 4) La salida...... Un cdigo = Status Modifica.. AF, BC, EI La rutina estndar para comprobar el gatillo de la palanca de control o espaciar estado crucial. Si el Idaho abastecido es fila de cero 8 de la matriz del teclado es leda (1226H) y convertida para un estado el cdigo. De otra manera - 63 4. ROM BIOS El conector de la palanca de control 1 o 2 es ledo (120CH) y convertido para un cdigo de estado. Los IDs de seleccin son: 0 = ESPACIAN LLAVE 1 = ALEGRA 1, GATILLO UNO 2 = SE REGOCIJAN 2, SE ACCIONAN UNO 3 = SE REGOCIJAN 1, TRIGGER B 4 = SE REGOCIJAN 2, TRIGGER B El valor devuelto es FFH si el gatillo pertinente se aprieta y cero otrora. La direccin ... 1273H El nombre...... GTPDL La entrada..... Un = Paddle Idaho (1 para 12) La salida...... Un valor = Paddle (0 para 255) Modifica.. AF, BC, DE, EI La rutina estndar para leer el valor de cualquier remo adjunto para un conector de la palanca de control. Cada uno del seis rayado de entrada (cuatro la direccin y dos gatillos) por conector puede soportar un remo tan doce es posible enteramente. Los remos pegaron para conector de la palanca de control 1 tienen identificadores de entrada 1, 3, 5, 7, 9 y 11. Esos pegaron para conector de la palanca de control 2 tienen identificadores de entrada 2, 4, 6, 8, 10 y 12. Cada remo es bsicamente un generador de pulso de un disparos, el largo del pulso controlndose por un reostato variable. Un pulso de principio es expedido para el conector especificado de la palanca de control por PSG Register 15. Una cuenta es entonces mantenida cuntas veces PSG Register 14 tiene que ser ledo hasta la entrada pertinente cronometra fuera. Cada incremento de la unidad representa un perodo aproximado de 12 s en una mquina MSX con una condicin de espera. La direccin ... 12ACH El nombre...... GTPAD
La entrada..... Un cdigo = Function (0 para 7) La salida...... Un = Status o valor Modifica.. AF, BC, DE, HL, EI La rutina estndar para ganar acceso a un touchpad adjunto para cualquier de los conectores de la palanca de control. Los cdigos disponibles de funciones para conector de la palanca de control 1 son: 0 = Devuelven A Activity Status "X" 1 = Return coordenada 2 = Devuelven a "Y" coordenada 3 = Devuelven A Switch Status Los cdigos de funcin 4 para 7 tienen el efecto del mismo con relacin a conector de la palanca de control 2. La funcin Activity Status devuelve a FFH si el Touchpad est siendo emocionado y ponga en el cero de otra manera. La funcin Switch Status devuelve a FFH si el interruptor est siendo presionado y ponga en el cero de otra manera. Las dos funciones coordinadas de peticin devuelven las coordenadas de la ltima posicin emocionada. Estas coordenadas son - 64 4. ROM BIOS Realmente almacenado en el variables Workspace Area PADX y PADY cuando una llamada con cdigo de funcin 0 o 4 detecten actividad. Noto que estas variables son compartidas por ambos conectores de la palanca de control. La direccin ... 1384H El nombre...... STMOTR La entrada..... Un ON = Motor / FUERA DEl cdigo La salida...... Ninguno Modifica.. AF La rutina estndar para revolver el relevador del motor del casete adelante o completamente por C PPI Port: El 00H = Off, 01H On, condicin de corriente FFH = Reverse. La direccin ... 1398H El nombre...... NMI La entrada..... Ninguno La salida...... Ninguno Modifica.. Ninguno La rutina estndar para procesar a un Z80 Non Maskable Interrupt, simplemente devuelve en una mquina estndar MSX. La direccin ... 139DH El nombre...... INIFNK La entrada..... Ninguno La salida...... Ninguno Modifica.. BC, DE, HL La rutina estndar para poner las iniciales en el de diez funciones de crucial coloca en serie para sus valores que se impulsan arriba. Lo ciento sesenta bytes de datos comenzando en 13A9H es emulado para el amortiguador FNKSTR en el Workspace Area.
La direccin ... 13A9H Este rea contiene los instrumentos de cuerda que se energizan arriba para las diez llaves de funcin. Cada cuerda es diecisis personajes bastante, colocaciones sin uso contenga ponen en el cero: F1 Para F5 F6 Para F10 El color de color 15,4,4 el RETORNO DE CARRO El automvil cload " El RETORNO DE CARRO goto cont La lista de la lista. CR ARRIBA DE ARRIBA El RETORNO DE CARRO andado de Lingsticas Computacionales de carrera de RETORNO DE CARRO La direccin ... 1449H El nombre...... RDVDP La entrada..... Ninguno La salida...... Un = VDP Status Register contenta Modifica.. uno La rutina estndar para introducir en la computadora los contenidos del VDP Status Register por ah leer al Command Port. Note esa lectura el VDP - 65 4. ROM BIOS
El estado Register despejar las banderas asociadas y puede hacer mella lo interrumpe al manipulador. La direccin ... 144CH El nombre...... RSLREG La entrada..... Ninguno La salida...... Un Slot = Primario Register contenta Modifica.. uno La rutina estndar para introducir en la computadora los contenidos de la ranura Primaria Register por ah leer A PPI Port. La direccin ... 144FH El nombre...... WSLREG La entrada..... Un = Value al que escribir La salida...... Ninguno Modifica.. Ninguno La rutina estndar para colocar al Slot Primario Register por ah escribir para la A PPI Port. La direccin ... 1452H El nombre...... SNSMAT La entrada..... Un nmero de la fila = Keyboard La salida...... Unos datos = Column de teclado reman Modifica.. AF, C, EI La rutina estndar para leer una fila completa de la matriz del teclado. La C PPI Port es leda
en luego espalda escrita con el nmero de la fila ocupando los aicos Select Row cuatro Keyboard. La B PPI Port es entonces leda en A de registro para devolver las ocho entradas de la columna. Las cuatro salidas miscelneas de control de C PPI Port estn no afectadas por esta rutina. La direccin ... 145FH El nombre...... ISFLIO La entrada..... Ninguno La salida...... La bandera NZ si el archivo yo / la O activo Modifica.. AF La rutina estndar a comprobar si el BASIC Interpreter actualmente dirige su entrada o su salida por uno yo el amortiguador de la / O. Esto est resuelto examinando a PTRFIL. Es normalmente cero pero contendr una direccin del amortiguador FCB (el Archivo Control Block) mientras las declaraciones como "impresin # 1", "entrada # 1", etc est siendo ejecutado por el Interpreter. La direccin ... 146AH El nombre...... DCOMPR La entrada..... HL, DE La salida...... La bandera Carolina Del Norte si la Z HL>DE, Flag si la C HL=DE, Flag si HL<DE Modifica.. AF La rutina estndar usada por el BASIC Interpreter a comprobar lo
- 66 4. ROM BIOS
Los valores relativos de pares de registro HL y Delaware. La direccin ... 1470H El nombre...... GETVCP La entrada..... Un nmero = Voice (0, 1, 2) La salida...... HL = Address en amortiguador de voz Modifica.. AF, HL La rutina estndar para devolver la direccin de byte 2 en el amortiguador especificado (VCBA, VCBB o VCBC) de voz. La direccin ... 1474H El nombre...... El GETVC2 La entrada..... El nmero de la L = Byte (0 para 36) La salida...... HL = Address en amortiguador de voz Modifica.. AF, HL La rutina estndar para devolver la direccin de cualquier byte en el amortiguador de voz (VCBA, VCBB o VCBC) especific por el nmero de voz en VOICEN. La direccin ... 148AH El nombre...... PHYDIO La entrada..... Ninguno La salida...... Ninguno Modifica.. Ninguno
La rutina estndar para el uso por el BASIC Disk, simplemente regresa en mquinas estndar MSX. La direccin ... 148EH El nombre...... FORMATEE La entrada..... Ninguno La salida...... Ninguno Modifica.. Ninguno La rutina estndar para el uso por el BASIC Disk, simplemente regresa en mquinas estndar MSX. La direccin ... 1492H El nombre...... PUTQ La entrada..... Un byte = Queue de nmero, E = Data La salida...... La Z de la bandera si la cola lleno Modifica.. AF, BC, HL La rutina estndar en la que colocar un byte de datos una de las tres colas de msica. La cola obtenga y las colocaciones puestas son primero tomadas de QUETAB (14FAH). La colocacin puesta es por ahora incrementada y comparada lo obtiene colocacin, si son iguales la rutina termina como la cola est llena. De otra manera la direccin de la cola es tomada de QUETAB y la colocacin puesta se sum a ella. El byte de datos es colocado en esta posicin en la cola, la colocacin puesta es incrementada y la rutina termina. Noto que las colas de msica son circulares, si lo llega
- 67 4. ROM BIOS
O los punteros puestos cumplen la ltima colocacin en la cola alrededor de la que ellos se enrollan de regreso al principio. La direccin ... 14ADH Esta rutina es usada por ah lo interrumpe manipulador para leer un byte de una de las tres colas de msica. La cola al nmero est suministrada en A de registro, el byte de datos es devuelta en A de registro y los ingresos de rutina Seala Con Una Bandera Z si la cola est vaca. La cola obtenga y las colocaciones puestas son primero tomadas de QUETAB (14FAH). Si la bandera del putback es activa luego el byte de datos es tomado de QUEBAK y la rutina termina (14D1H), esta facilidad est sin uso en las versiones coetneas del MSX ROM. La colocacin puesta es entonces comparada lo obtiene colocacin, si son iguales la rutina termina como la cola est vaca. De otra manera la direccin de la cola es tomada de QUETAB y lo se agrega colocacin para ella. El byte de datos es ledo de esta posicin en la cola, lo obtiene colocacin es incrementada y la rutina termina. La direccin ... 14DAH Esta rutina es usada por la rutina del estndar GICINI para poner las iniciales en el bloque de control de una cola en QUETAB. El bloque de control est primero ubicado en QUETAB (1504H) y lo puesto, llegue y bytes putback puestos en el cero. El byte de tamao es determinado de B de registro y la direccin de la cola de par de registro Delaware. La direccin ... 14EBH
El nombre...... LFTQ La entrada..... Un nmero = Queue La salida...... HL = Desbloquee espacio izquierdo en cola Modifica.. AF, BC, HL La rutina estndar para devolver el nmero de bytes libres dej en una cola de msica. La cola obtenga y las colocaciones puestas son tomadas de QUETAB (14FAH) y el espacio libre determin sustrayendo puesto de llegue. La direccin ... 14FAH Esta rutina devuelve los parmetros de control de una cola de QUETAB, la cola al nmero est suministrada en A de registro. El bloque de control est primero ubicado en QUETAB (1504H), la colocacin puesta es luego colocada en registro B, lo mete en colocacin C de registro y la bandera del putback en A de registro. La direccin ... 1504H Esta rutina localiza el bloque de control de una cola en QUETAB. La cola al nmero est suministrada en A de registro y que la direccin del bloque de control devolvi en par de registro HL. El nmero de la cola est simplemente multiplicado por seis, ya que hay seis bytes por bloque, y aadido para la direccin de QUETAB tan sostenido en QUEUES.
- 68 4. ROM BIOS
La direccin ... 1510H El nombre...... GRPPRT La entrada..... Un = Carcter La salida...... Ninguno Modifica.. EI La rutina estndar para exteriorizar un carcter en la pantalla en ya sea Graphics Mode o el Multicolor Mode, es funcionalmente equivalentes a la rutina del estndar CHPUT. La rutina del estndar CNVCHR se usa primero para inspeccionar para un carcter grfico, si el carcter es un cdigo del encabezado (01H) que luego la rutina termina sin accin. Si el carcter es uno grfico convertido luego el captulo de desciframiento de cdigo de control es saltado. De otra manera el carcter es comprobado para ver si es un cdigo de control. Slo el cdigo de RETORNO DE CARRO (0DH) es reconocido (157EH), todos otros personajes ms pequeos que 20H estn ignorados. Asumir el carcter es explayable su patrn del pixel de ocho bytes es copiado del carcter ROM determinado en el amortiguador PATWRK (0752H) y FORCLR del que se recibi bien el mensaje de radio para ATRBYT para colocar su color. Las coordenadas coetneas de grficos son luego tomadas de GRPACX y GRPACY y estn acostumbrado a coloque la direccin fsica del pixel en uso en estos momentos por el SCALXY y rutinas del estndar MAPXYC. El patrn de ocho bytes en PATWRK es procesado un byte a la vez. Al principio de cada byte la direccin fsica del pixel en uso en estos momentos sea obtenida por la rutina del estndar FETCHC y se salve. Los ocho aicos son entonces examinados a su vez. Si el bit es uno 1 el pixel asociado est colocado por la rutina del estndar SETC, entonces si es una 0 ninguna accin es tomada.
Despus de que cada uno mordi la direccin fsica del pixel en uso en estos momentos es movida bien (16ACH). Cuando el byte est acabado, o el borde de la derecha de la pantalla es alcanzado, la direccin fsica del pixel en uso en estos momentos inicial est recuperada y pasea a lo largo de una posicin por la rutina del estndar TDOWNC. Cuando el patrn es completo, o la raz de la pantalla ha sido alcanzada, GRPACX est actualizado. En Graphics Mode su valor es aumentado a las ocho, en el Multicolor Mode a las treinta y dos. Si GRPACX luego excede 255, el borde de la derecha de la pantalla, una operacin de RETORNO DE CARRO es realizada (157EH). La direccin ... 157EH Esta rutina realiza la operacin de RETORNO DE CARRO para la rutina del estndar GRPPRT, estas funciones de cdigo como un RETORNO DE CARRO combinado, LF. GRPACX es puesto en el cero y ocho o treinta y dos, dependiendo del modo de la pantalla, aadido para GRPACY. Si GRPACY luego excede 191, entonces la raz de la pantalla, est colocado para poner en el cero. GRPACX y GRPACY pueden ser manipulados directamente por un programa de aplicacin para compensar el nmero limitado de funciones de control disponibles.
- 69 4. ROM BIOS
La direccin ... 1599B El nombre...... SCALXY La entrada..... BC=X coordnese, coordenada DE=Y La salida...... La bandera Carolina Del Norte si recortado Modifica.. AF La rutina estndar para recortar un par de grficos se coordina si es necesario. El BASIC que Interpreter puede producir se coordina en el rango - 32768 para + 32767 si bien ste lejos exceda el tamao real de la pantalla. Esta rutina modifica valores coordinados excesivos para acomodar dentro del rango fsicamente realizable. Si la coordenada de la X es mayor que 255 que es determinada para 255, entonces si la coordenada de la Y es mayor que 191 que es determinada para 191. Si o se coordina es negativa (ms gran que 7FFFH) que est colocada para poner en el cero. Finalmente si la pantalla est de, entonces el Modo Multicolor ambas coordenadas estn divididos a las cuatro segn lo solicitado por la rutina del estndar MAPXYC. La direccin ... 15D9H Esta rutina se usa para comprobar el modo coetneo de la pantalla, devuelve Z Flag si la pantalla est de Modo Graphics. La direccin ... 15DFH El nombre...... MAPXYC La entrada..... BC=X coordnese, coordenada DE=Y La salida...... Ninguno Modifica.. AF, D, HL La rutina estndar para convertir un par de coordenada de grficos en la direccin fsica del pixel en uso en estos momentos. La posicin en el Character Pattern Table del byte conteniendo
el pixel es colocada en CLOC. La mscara mordida identificando el pixel dentro de ese byte es colocada en CMASK. Los mtodos de conversin ligeramente diferentes sirven para Graphics Mode y el Multicolor Mode, programas equivalentes en el BASIC son: Grfico Mode 10 INPUT"X, Y Coordinates ";X, Y 20 UNO = (Y\8) * 256 + (Y AND 7) + (X AND y HF8) 30 PRINT"ADDR = ";+ la A HEX$ (la Base (12)) ""H "; 40 RESTITUYEN 100 50 FOR N = 0 PARA (X AND 7):M$ LEDO: SIGUIENTE N 60 PRINT"MASK = ";M$ 70 GOTO 10 100 DATOS 10000000 110 DATOS 01000000 120 DATOS 00100000 130 DATOS 00010000 140 DATOS 00001000 150 DATOS 00000100 160 DATOS 00000010 170 DATOS 00000001
- 70 4. ROM BIOS
Mode multicolor 10 INPUT"X, Y Coordinates ";X, Y 20 X = X\4:Y-Y\4 30 UNO = (Y\8) * 256 + (Y AND 7) + (X * 4 Y y HF8) 40 PRINT"ADDR = ";+ la A HEX$ (la BASE (17)) ""H "; 50 SI 2=0 X MOD THEN MS "11110000" ELSE MS "00001111" 60 PRINT"MASK = ";M$ 70 GOTO 10 El rango admisible de entrada para ambos programas es X = 0 para 255 y Y = 0 para 191. Las declaraciones de datos en el programa Graphics Mode corresponden para la mesa de la mscara de ocho bytes comenzando en 160BH en el MSX ROM. Lnea 20 en el programa Multicolor Mode realmente es propia de la divisin a las cuatro en la rutina del estndar SCALXY. Es incluido para hacer el sistema de coordenadas consistente para ambos programas. La direccin ... 1639H El nombre...... FETCHC La entrada..... Ninguno La salida...... Un = CMASK, HL=CLOC Modifica.. Un, HL La rutina estndar para devolver la direccin fsica del pixel en uso en estos momentos, el par de registro HL es cargado de A CLOC y de registro de CMASK. La direccin ... 1640H El nombre...... STOREC La entrada..... Un = CMASK, HL=CLOC
La salida...... Ninguno Modifica.. Ninguno La rutina estndar para colocar la direccin fsica del pixel en uso en estos momentos, el par de registro HL es copiado para CLOC y la A de registro es copiada para CMASK. La direccin ... 1647H El nombre...... READC La entrada..... Ninguno La salida...... Un cdigo = Colour de pixel en uso en estos momentos Modifica.. AF, EI La rutina estndar para devolver el color del pixel en uso en estos momentos. La direccin fsica VRAM es primero obtenido por la rutina del estndar FETCHC. Si la pantalla est de, entonces el Modo Graphics hacia el que el byte apunt por CLOC es ledo del Character Pattern Table por la rutina del estndar RDVRM. El bit requerido est entonces aislado por CMASK y est acostumbrado a seleccionar ya sea el cuatro bits superior o inferior de la entrada correspondiente en el Colour Table. Si la pantalla est de, entonces el Modo Multicolor hacia que el byte apunt por CLOC es ledo del Character Pattern Table por el RDVRM
- 71 4. ROM BIOS
La rutina estndar. CMASK est luego acostumbrado a seleccionar ya sea el cuatro bits superior o inferior de este byte. El valor devuelto en cualquier caso ser un cdigo normal de color VDP de cero para quince. La direccin ... 1676H El nombre...... SETATR La entrada..... Un cdigo = Colour La salida...... La C de la bandera si el cdigo ilegal Modifica.. Las banderas La rutina estndar para colocar el color de tinta de grficos usado por el SETC y rutinas del estndar NSETCX. El cdigo de color, de cero para quince, es simplemente colocado en ATRBYT. La direccin ... 167EH El nombre...... SETC La entrada..... Ninguno La salida...... Ninguno Modifica.. AF, EI La rutina estndar para colocar el pixel en uso en estos momentos para cualquier color, el cdigo de color es tomado de ATRBYT. La direccin fsica VRAM de pixel es primero obtenido por la rutina del estndar FETCHC. En Graphics Mode ambos el Character Pattern Table y Colour Table estn entonces modificados (186CH). En el Multicolor Mode el byte apuntado para por CLOC es ledo del Character Pattern Table por la rutina del estndar RDVRM. Los contenidos de ATRBYT son luego colocados en el cuatro bits superiores o inferior, tan determinados por CMASK, y el byte espalda escrita por la rutina del estndar WRTVRM
La direccin ... 16ACH Esta rutina conmueve la colocacin coetnea del mismo de la direccin fsica del pixel bien. Si el borde de la derecha de la pantalla es excedido, entonces regresa con ustedstedst Flag y la direccin fsica es igual. En Graphics Mode CMASK est primer intercambiado bit bien, si el pixel todava permanece dentro del byte que la rutina termina. Si CLOC est en casa de la clula de carcter (LSB = F8H para FFH) de la extrema derecha, entonces luego la rutina termina con Flag C (175AH). CMASK diferente est listo para 80H, el leftmost pixel, y 0008H aadido para CLOC. En el Multicolor Mode las transferencias de control para una rutina separada (1779H). La direccin ... 16C5H El nombre...... RIGHTC La entrada..... Ninguno La salida...... Ninguno Modifica.. AF La rutina estndar para mover la direccin fsica del pixel en uso en estos momentos
- 72 4. ROM BIOS
Un derecho de colocacin. En Graphics Mode CMASK est primer intercambiado bit bien, si el pixel todava permanece dentro del byte que la rutina termina. CMASK diferente est listo para 80H, el leftmost pixel, y 0008H aadido para CLOC. Noto que las direcciones incorrectas sern producidas si el borde de la derecha de la pantalla es excedido. En el Multicolor Mode las transferencias de control para una rutina separada (178BH). La direccin ... 16D8H Esta rutina mueve la izquierda de colocacin del mismo de la direccin fsica del pixel en uso en estos momentos. Si el borde de la izquierda de la pantalla es excedido, entonces devuelve C Flag y la direccin fsica es igual. En Graphics Mode que CMASK est que lo primer intercambiado mordi izquierda, si el pixel todava permanece dentro del byte, entonces la rutina termina. Si CLOC est en casa de la clula de carcter del leftmost (LSB = 00H para 07H), entonces luego la rutina termina con Flag C (175AH). CMASK diferente est listo para 01H, el pixel de la extrema derecha, y 0008H sustrado de CLOC. En el Multicolor Mode las transferencias de control para una rutina separada (179CH). La direccin ... 16EEH El nombre...... LEFTC La entrada..... Ninguno La salida...... Ninguno Modifica.. AF La rutina estndar para mover la colocacin coetnea del mismo de la direccin fsica del pixel dej. En Graphics Mode que CMASK est que lo primer intercambiado mordi izquierda, si el pixel todava permanece dentro del byte, entonces la rutina termina. CMASK diferente est listo para 01H, el leftmost pixel, y 0008H sustrado de CLOC. Noto que las direcciones incorrectas sern producidas si el borde de la izquierda de la pantalla es excedido.
En el Multicolor Mode las transferencias de control para una rutina separada (17ACH). La direccin ... 170AH El nombre...... TDOWNC La entrada..... Ninguno La salida...... La C de la bandera si fuera de pantalla Modifica.. AF La rutina estndar para mover la colocacin coetnea del mismo de la direccin fsica del pixel abajo. Si el borde ms bajo de la pantalla es excedido, entonces devuelve C Flag y la direccin fsica es igual. En Graphics Mode CLOC es primero incrementado, si todava permanece dentro de una ocho demarcacin de byte que la rutina termina. Si CLOC estaba de la pelea ms bajo (CLOC > = 1700H) de carcter, entonces luego la rutina termina con Flag C (1759H). Se el se sum a 00F8H diferente
- 73 4. ROM BIOS
CLOC. En el Multicolor Mode las transferencias de control para una rutina separada (17C6H). La direccin ... 172AH El nombre...... DOWNC La entrada..... Ninguno La salida...... Ninguno Modifica.. AF La rutina estndar para mover la colocacin coetnea del mismo de la direccin fsica del pixel abajo. En Graphics Mode CLOC es primero incrementado, si todava permanece dentro de una ocho demarcacin de byte que la rutina termina. El 00F8H diferente se agrega para CLOC. Noto que las direcciones incorrectas sern producidas si el borde ms bajo de la pantalla es excedido. En el Multicolor Mode las transferencias de control para una rutina separada (17DCH). La direccin ... 173CH El nombre...... TUPC La entrada..... Ninguno La salida...... La C de la bandera si fuera de pantalla Modifica.. AF La rutina estndar para conmover la colocacin coetnea del mismo de la direccin fsica del pixel arriba. Si el carel de la pantalla es excedido, entonces regresa con ustedstedst Flag y la direccin fsica es igual. En Graphics Mode CLOC est primer decremented, si todava permanece dentro de una ocho demarcacin de byte que la rutina termina. Si CLOC estaba de la pelea mxima (CLOC < 0100H) de carcter, entonces luego la rutina termina con ustedstedst Flag. El 00F8H diferente es sustrado de CLOC. En el Multicolor Mode las transferencias de control para una rutina separada (17E3H). La direccin ... 175DH El nombre...... UPC La entrada..... Ninguno
La salida...... Ninguno Modifica.. AF La rutina estndar para conmover la colocacin coetnea del mismo de la direccin fsica del pixel arriba. En Graphics Mode CLOC est primer decremented, si todava permanece dentro de una ocho demarcacin de byte que la rutina termina. El 00F8H diferente es sustrado de CLOC. Noto que las direcciones incorrectas sern producidas si el carel de la pantalla es excedido. En el Multicolor Mode las transferencias de control para una rutina separada (17F8H).
- 74 4. ROM BIOS La direccin ... 1779H sta es la versin Multicolora Mode de la rutina en 16ACH. Es idntico para la versin Graphics Mode excepto que CMASK es cambiado de posicin que cuatro mordieron derecha de colocaciones y se convierte en F0H si un lmite de la clula es cruzado. La direccin ... 178BH sta es la versin Multicolora Mode de la rutina del estndar RIGHTC. Es idntico para la versin Graphics Mode excepto que CMASK es cambiado de posicin que cuatro mordieron derecha de colocaciones y se convierte en F0H si un lmite de la clula es cruzado. La direccin ... 179CH sta es la versin Multicolora Mode de la rutina en 16D8H. Es idntico para la versin Graphics Mode excepto que CMASK es cambiadas de posicin que colocaciones de cuatro bits dejaron y se convierte en 0FH si un lmite de la clula es cruzado. La direccin ... 17ACH sta es la versin Multicolora Mode de la rutina del estndar LEFTC. Es idntico para la versin Graphics Mode excepto que CMASK es cambiadas de posicin que colocaciones de cuatro bits dejaron y se convierte en 0FH si un lmite de la clula es cruzado. La direccin ... 17C6H sta es la versin Multicolora Mode de la rutina del estndar TDOWNC. Es idntico para la versin Graphics Mode excepto que la direccin ms bajo de demarcacin es 0500H en lugar de 1700H. Hay un problema no resuelto en el software en esta rutina que lo causar para comportarse imprevisiblemente si MLTCGP, la direccin bajo Table Pattern Character, se vara de su valor normal de cero. Debera haber una instruccin Delaware EX, HL inserto en 17CEH de la direccin. Si la base Character Pattern Table es aumentada, entonces la rutina pensar que ha alcanzado la raz de la pantalla cuando realmente no tiene. Esta rutina est usada por la "pintura" declaracin as es que lo siguiente demuestra el defecto: 10 BASAN (17) = y H1000 20 OCULTAN 3 30 PSET (200,0)
40 DRAW"D180L100U180R100 " 50 PINTAN (150,90) 60 GOTO 60 La direccin ... 17DCH sta es la versin Multicolora Mode de la rutina del estndar DOWNC, es idntica para la versin Graphics Mode. - 75 4. ROM BIOS
La direccin ... 17E3H sta es la versin Multicolora Mode de la rutina del estndar TUPC. Es idntico para la versin Graphics Mode excepto que es tiene un problema no resuelto en el software tan citado anteriormente, esta vez debera haber una instruccin Delaware EX, HL en 17EBH de la direccin. Si el discurso bajo Table Pattern Character es aumentada, entonces la rutina pensar que est dentro de la mesa cuando realmente ha excedido el carel de la pantalla. Esto puede ser demostrado quitndole al "R100" parte de Line 40 en el programa previo. La direccin ... 17F8H sta es la versin Multicolora Mode de la rutina del estndar UPC, es idntica para la versin Graphics Mode. La direccin ... 1809H El nombre...... NSETCX La entrada..... HL = Pixel llena cuenta La salida...... Ninguno Modifica.. AF, BC, DE, HL, EI La rutina estndar para colocar el color de pixels mltiples horizontalmente rightwards de la direccin fsica del pixel en uso en estos momentos. Aunque su funcin puede ser multiplicada por dos por el SETC y rutinas del estndar RIGHTC sta resultara significativamente operacin ms lenta. La cuenta suministrada del pixel debera estar seleccionada a fin de que el borde de derecha de la pantalla no es hecho pasar por ste producir comportamiento anmalo. La direccin fsica del pixel en uso en estos momentos es igual por esta rutina. En Graphics Mode CMASK es primero examinado para determinar el nmero de pixels a la derecha dentro de la clula de carcter en uso en estos momentos. Asumiendo lo llena cuenta es bastante grande que stas estn luego listas (186CH). El faltante llena cuenta est dividida a las ocho para determinar el nmero de clulas enteras de carcter. Los bytes sucesivos en el Character Pattern Table son entonces puestos en el cero y los bytes correspondientes en el Colour Ponen Sobre Una Mesa set de ATRBYT para llenar estas clulas enteras. El faltante llena cuenta es luego convertida a una mscara mordida, usando la mesa de siete bytes en 185DH, y estos pixels estn colocados (186CH). En el Multicolor Mode las transferencias de control para una rutina separada (18BBH). La direccin ... 186CH
Esta rutina incrusta para ocho pixels dentro de una clula para un color especificado en Graphics Mode. ATRBYT contiene el cdigo de color, par de registro HL la direccin del byte pertinente en la A Character Pattern Table y de registro una mscara mordida, 11100000 por ejemplo, dnde cada 1 especifican un poco ser determinados.
- 76 4. ROM BIOS
Si ATRBYT hace juego con el color 1 existente pixel en el byte correspondiente Colour Table luego cada bit especificado est colocado para 1 en el byte Character Pattern Table. Si ATRBYT hace buena pareja el existente color 0 pixel en el byte correspondiente Colour Table luego cada uno el bit especificado est colocado para 0 en el byte Character Pattern Table. Si ATRBYT no hace juego con cualquier de los colores existentes en el Colour Table Byte luego normalmente cada bit especificado est colocado para 1 en el byte Character Pattern Table y lo 1 color pixel cambiado en el byte Colour Table. De cualquier forma que si esto resultara en todos los ratos siendo determinado para 1 en el byte Character Pattern Table luego cada bit especificado est colocado para 0 y lo 0 color pixel cambiado en el byte Colour Table. La direccin ... 18BBH sta es la versin Multicolora Mode de la rutina del estndar NSETCX. El SETC y rutinas del estndar RIGHTC son llamados lo llena cuenta est agotada. La velocidad de operacin no es tan importante en el Modo Multicolor por la resolucin inferior de la pantalla y la reduccin consiguiente en el nmero de operaciones requeridas. La direccin ... 18C7H El nombre...... GTASPC La entrada..... Ninguno La salida...... Delaware = ASPCT1, HL = ASPCT2 Modifica.. DE, HL La rutina estndar para devolver el "crculo" proporciones dimensionales de incumplimiento de declaracin. La direccin ... 18CFH El nombre...... PNTINI La entrada..... Un color = Boundary (0 para 15) La salida...... La C de la bandera si el color ilegal Modifica.. AF La rutina estndar para colocar el color de demarcacin para la "pintura" declaracin. En el Multicolor Mode el cdigo suministrado de color es colocado en BDRATR. En Graphics Mode BDRATR es emulado de ATRBYT en su estado actual posible para tener colores de la separata de pintura y de demarcacin. La direccin ... 18E4H El nombre...... SCANR La entrada..... El interruptor de la B = Fill, la cuenta de Delaware = Skip La salida...... La cuenta Delaware = Skip de remanente, HL = Pixel Modifica.. AF, BC, DE, HL, EI La rutina estndar usada por la "pintura" manipulador de declaracin para registrar rightwards
de la direccin fsica del pixel en uso en estos momentos hasta un cdigo de color igual para BDRATR es encontrada o el borde de lo
- 77 4. ROM BIOS
La pantalla es alcanzada. La colocacin que termina se convierte en la direccin fsica del pixel en uso en estos momentos y la colocacin inicial es devuelta en CSAVEA y CSAVEM. El tamao de la regin atravesada es devuelto en par de registro HL y FILNAM + 1. La regin atravesada est normalmente llena en pero esto puede estar inhibido, en Graphics Mode slo, por ah utilizador un parmetro de entrada de cero en B de registro. El escrutinio de salto en par de registro Delaware determina el nmero mximo de pixels del color requerido que se ignor de la colocacin inicial de puesta en marcha. Esta facilidad es usada por la "pintura" manipulador de declaracin para ir en busca de aberturas en una demarcacin horizontal bloqueando su progreso ascendente. La direccin ... 197AH El nombre...... SCANL La entrada..... Ninguno La salida...... La cuenta HL = Pixel Modifica.. AF, BC, DE, HL, EI La rutina estndar a investigar hacia la izquierda de la direccin fsica del pixel en uso en estos momentos hasta un cdigo de color igual para BDRATR es encontrada o el borde de la pantalla es alcanzado. La colocacin que termina se convierte en la direccin fsica del pixel en uso en estos momentos y el tamao de la regin atravesada es devuelto en par de registro HL. La regin atravesada est siempre llena adentro. La direccin ... 19C7H Esta rutina es usada por el SCANL y rutinas del estndar SCANR para cotejar a actual el color de pixel contra el color de demarcacin en BDRATR. La direccin ... 19DDH El nombre...... TAPOOF La entrada..... Ninguno La salida...... Ninguno Modifica.. EI La rutina estndar para detener el casete motor despus de datos ha estado escrita para el casete. Despus de un retraso de 550 ms, en MSX las mquinas con una condicin de espera, el control cae en la rutina del estndar TAPIOF. La direccin ... 19E9H El nombre...... TAPIOF La entrada..... Ninguno La salida...... Ninguno Modifica.. EI La rutina estndar para detener el casete motor despus de datos ha sido leda del casete. El relevador motor es abierto por el PPI Mode Port. La nota que interrumpe, cul debe ser deshabilitado durante transferencias de datos del casete para cronometrar razones, es posibilitado como esta rutina termine.
- 78 4. ROM BIOS La direccin ... 19F1H El nombre...... TAPOON La entrada..... Un interruptor de largo = Header La salida...... La C de la bandera si la terminacin CTRL-STOP Modifica.. AF, BC, HL, DI La rutina estndar para revolver el casete motor de adelante, espere a 550 ms para la cinta venidera levantado para acelerar y luego escribir un encabezado para el casete. Un encabezado es una rfaga de Hawaii se cicla escrita delante de cada bloque de datos as es que la tasa de baudio puede ser determinada cuando los datos es vuelta a leer. El largo del encabezado es determinado por los contenidos de A de registro: El encabezado del 00H = Short, el encabezado NZ = Long. Las declaraciones del casete de BASIC "salvo", "CSAVE" y "BSAVE" todo generan una cada de cabeza larga al principio del archivo, en parte delantera del bloque de la identificacin, y despus uso pone en cortocircuito encabezados entre bloques de datos. El nmero de ciclos en el encabezado est tambin modificado por la tasa coetnea de baudio para conservar su constante de duracin: 1200 CORTOCIRCUITO Baud ... 3840 Ciclos ... 1.5 Segundos 1200 Baud LONG ... 15360 Ciclos ... 6.1 Segundos 2400 CORTOCIRCUITO Baud ... 7936 Ciclos ... 1.6 Segundos 2400 Baud LONG ... 31744 Ciclos ... 6.3 Segundos Despus de que el motor se haya encendido y el retraso ha caducado los contenidos de ENCABEZADO son multiplicados a las doscientos cincuenta y seis y, si la A de registro fuera poco pone en el cero, por un ms factor de cuatro para producir la cuenta ciclista. Los ciclos de Hawaii son entonces generados (1A4DH) hasta que la cuenta est agotada despus de lo cual el control se traslada para la rutina del estndar BREAKX. Porque la llave CTRL-STOP es slo examinada en la terminacin es imposible romper fuera en parte muy a travs de esta rutina. La direccin ... 1A19H El nombre...... TAPOUT La entrada..... Un byte = Data La salida...... La C de la bandera si la terminacin CTRL-STOP Modifica.. AF, B, HL La rutina estndar para escribir un solo byte de datos para el casete. El MSX ROM usa un software mtodo propulsado FSK (la Frecuencia Shift Tecle) para almacenar informacin en el casete. En la tasa de 1200 baudios esto es idntico para el Kansas City Standard usado por el BBC para la distribucin de BASICODE programa. En 1200 el baudio a cada 0 bit le es escritos como un ciclo 1200 completo Hz LO y cada 1 bit como dos ciclos 2400 completos Hz Hawaii. La tasa de datos es as de constante como 0 y 1 aicos tienen la misma duracin. Cuando lo 2400 baudio evale es seleccionado que las dos frecuencias se convierten en 2400 Hz y 4800 Hz pero el formato es otrora igual.
- 79 4. ROM BIOS Un byte de datos est escrito con un 0 bit de principio (1A50H), ocho aicos de datos con el bit menos significativo primero, y dos 1 aicos de alto (1A40H). En la tasa de 1200 baudios un solo byte tendr una duracin nominal de 11 x 833 s = 9.2 seora Despus De Que los aicos de a alto les hayan sido que las transferencias de control para la rutina del estndar BREAKX para comprobar al CTRL-STOP teclean. El byte debajo del que el 43H es mostrado como l estara escrito para casete: +- +++++++++ + - + - + - + - +++++ + - + +++++++++ - + - + - + - + +++++ PRINCIPIO 0 1 2 3 4 5 6 7 ALTO DE ALTO 1 transiciones de = dos (como los AICOS de ALTO) "cortocircuitos" 0 = una transicin "larga" (como el PRINCIPIO MORDIDO) Figura 39: El Byte De Datos Del Casete Es importante no dejar demasiado tiempo un intervalo entre los bytes cuando los datos de la escritura como ste aumentarn la tasa de error. Una abertura de interbyte de 80 s, por ejemplo, produce una tasa leda de fracaso de aproximadamente doce por ciento. Si una cantidad sustancial de procesamiento es precisada entre cada byte luego moderador debera usarse para aglomerar datos en bloques del headered. El BASIC "salvo" formato es de este tipo. La direccin ... 1A39H Esta rutina escribe un solo ciclo LO con un largo de aproximadamente 816 s para el casete. El largo de cada mitad del ciclo es tomado de transferencias de PUNTO BAJO y de control para el generador ciclista general (1A50H). La direccin ... 1A40H Esta rutina escribe dos ciclos de Hawaii para el casete. El primer ciclo es generado (1A4DH) seguido por un 17 retraso s y luego el segundo ciclo (1A4DH). La direccin ... 1A4DH Esta rutina escribe un solo ciclo de Hawaii con un largo de aproximadamente 396 s para el casete. El largo de cada mitad del ciclo es tomado de ALTO y el control cae en el generador ciclista general. La direccin ... 1A50H Esta rutina escribe un solo ciclo para el casete. El largo de primer tiempo del ciclo es suministrado en L de registro y su segundo medio en H de registro. El primer largo es pelusa contada y luego el Cas Out mordi set por el PPI Mode Port. El segundo largo es pelusa contada y la reanudacin del bit Cas Out. - 80 -
4. ROM BIOS
En todas las mquinas MSX el Z80 corre en una frecuencia del reloj de 3.579545 MHz (280 ns) con una condicin de espera durante el ciclo M1. Como esta rutina cuenta cada 16T declara cada incremento de la unidad en la cuenta de largo representa un perodo de 4.47 s. Hay tambin unos gastos fijos fijos de 20.7 s asociados con la rutina cualquier cosa la cuenta de largo. La direccin ... 1A63H El nombre...... TAPION La entrada..... Ninguno La salida...... La C de la bandera si la terminacin CTRL-STOP Modifica.. AF, BC, DE, HL, DI La rutina estndar para revolver el casete motor de adelante, lea el casete hasta que un encabezado sea encontrado y luego determina la tasa de baudio. Los ciclos sucesivos son ledos del casete y el largo de cada uno medido (1B34H). Cuando 1,111 ciclos han sido encontrados menos de variacin 35 s en sus largos un encabezado ha estado ubicado. Los siguientes 256 ciclos son entonces ledos (1B34H) y promediados para determinar el largo de ciclo del casete Hawaii. Esta figura est multiplicado por 1.5 y colocado en LOWLIM donde define el largo lo suficientemente bueno mnimo de un 0 bit de principio. El largo de ciclo de Hawaii es colocado en WINWID y se usar para discriminar entre ciclos LO y Hawaii. La direccin ... 1ABCH El nombre...... TAPIN La entrada..... Ninguno La salida...... Un = Byte le ley, la C Flag si CTRL-STOP o yo el error de la / O Modifica.. AF, BC, DE, L La rutina estndar para leer un byte de datos del casete. El casete es primera lectura continuamente hasta que un bit de principio es encontrado. Esto est hecho localizando una transicin negativa, midiendo el siguiente pedazo ciclista (1B1FH) y comparando as de para ver si es mayor que LOWLIM. Cada uno de los ocho aicos de datos son entonces ledos contando el nmero de transiciones dentro de un perodo de tiempo fijo (1B03H). Si el cero o uno las transiciones es encontrado que es un 0 bit, entonces si dos o tres son encontrados que es un 1 bit. Si ms que tres transiciones fueran encontradas la rutina terminan con ustedstedss Flag como ste - se supone - es un error del hardware de algn tipo. Despus del valor de cada bit ha estado resuelto uno que adicionalmente a uno o dos transiciones les es ledos (1B23H) para retener sincronizacin. Con un mismo impar de la cuenta de transicin a ms les sern ledos, con una cuenta pareja de transicin dos ms. La direccin ... 1B03H Esta rutina es usada por la rutina del estndar TAPIN para contar el nmero de casete efecta una transicin dentro de un perodo fijo de
- 81 4. ROM BIOS El tiempo. La duracin de la ventana es contenida en WINWID y es aproximadamente 1.5 veces
el largo de un ciclo de Hawaii como se muestra debajo: +- La ventana LO Va En Bicicleta +------- + + Hawaii Va En Bicicleta +--- + + --- + + Figura 40: El casete Window El bit Cas Input es continuamente probado por PSG Register 14 y comparado con la lectura previa mantenido en E de registro. Cada vez que un cambio de condicin es encontrado la C de registro es incrementada. La tasa de muestreo es una vez cada 17.3 s as el valor en WINWID, lo cual estaba resuelta por la rutina del estndar TAPION con una tasa de la cuenta de 11.45 s, lo est de manera impresionante multiplicarse un y que una mitad cronometra. La direccin ... 1B1FH Esta rutina mide el tiempo para la siguiente transicin de entrada del casete. El Cassette Input mordi es continuamente probado por PSG Register 14 hasta que se altere de la condicin abastecida en E de registro. La bandera estatal es entonces invertida y la cuenta de duracin regres en registro C, cada incremento de la unidad representa un perodo de 11.45 s. La direccin ... 1B34H Esta rutina mide el pedazo de un ciclo completo del casete de transicin negativa para negar transicin. El Cassette Input mordi es probado por PSG Register 14 hasta que vaya al cero. La bandera de transicin en E de registro est colocada para poner en el cero y el tiempo para la transicin positiva medida (1B23H). El tiempo para la transicin negativa es entonces medido (1B25H) y el total regres en C de registro. La direccin ... 1B45H El nombre...... SUPERE La entrada..... Un = Carcter a la salida La salida...... Ninguno Modifica.. EI La rutina estndar usada por el BASIC Interpreter para devolver un carcter para el dispositivo en uso en estos momentos. La rutina del estndar ISFLIO es - 82 4. ROM BIOS La primera parte usada para cheque ya sea la salida es actualmente direccionada uno yo el amortiguador de la / O, si as es que el control se traslada para el conductor secuencial (6C48H) de salida por la rutina del estndar CALBAS. Si PRTFLG es, entonces ponga en el cero transferencias de control para la rutina del estndar CHPUT para devolver el carcter para la
pantalla. Asumir que la impresora es RAWPRT activo es comprobado. Si esto es poco ponga en el cero, entonces el carcter est aprobado directamente para la impresora (1BABH), el control diferente cae en la rutina del estndar OUTDLP. La direccin ... 1B63H El nombre...... OUTDLP La entrada..... Un = Carcter a la salida La salida...... Ninguno Modifica.. EI La rutina estndar para devolver un carcter para la impresora. Si el carcter es, entonces un cdigo de la ETIQUETA (0, 8, 16 etctera (09H) espacios es expedido para la rutina del estndar OUTDLP hasta que LPTPOS sea un mltiplo de ocho.). Si el carcter es, entonces un cdigo de RETORNO DE CARRO (0DH) LPTPOS es puesto en el cero si es cualquier otro cdigo de control LPTPOS est no afectado, si es un carcter explayable LPTPOS es incrementado. Si NTMSXP es cero, entonces significar una impresora especfica a MSX est conectado, el carcter est aprobado directamente para la impresora (1BABH). Asumir una impresora normal est conectado que la rutina del estndar CNVCHR se usa para revisar en busca de personajes grficos. Si el carcter es un encabezado codifique (01H), entonces la rutina termina sin accin. Si es un carcter grfico convertido, entonces es reemplazado por un espacio, todo otros personajes son pasados a la impresora (1BACH). La direccin ... 1B97H Este veinte byte la mesa es usado por el decodificador del teclado para encontrar la rutina correcta para un nmero crucial dado: TECLEE NMERO PARA FUNCIONAR El 00H para 2FH 0F83H Rows 0 para 5 El 30H para el CAMBIO 32H 0F10H, CTRL, GRFICA 33H 0F36H LLEGUE AL CLMAX El CDIGO 34H 0F10H El 35H para 39H 0FC3H F1 para F5 El 3AH para 3BH 0 F10H ESC, ETIQUETA 3CH 0F46H DETNGASE El 3DH para 40H 0F10H BS, el RETORNO DE CARRO, SEL, ESPACIO 41H 0F06H DIRJASE HACIA EL BLANCO El 42H para 57H 0F10H Indianas, DEL, CURSOR La direccin ... 1BABH Esta rutina es usada por la rutina del estndar OUTDLP para pasar un carcter a la impresora. Es enviado por la rutina del estndar LPTOUT, si esto devuelve C Flag que el control se traslada para lo - 83 4. ROM BIOS
"El dispositivo yo" el generador de "error de la / O" (73B2H) por la rutina del estndar CALBAS.
La direccin ... 1BBFH El siguiente 2 KB contiene el conjunto de caracteres que se impulsa arriba. Los primeros ocho bytes contienen el patrn para el cdigo de caracteres 00H, los segundos ocho bytes el patrn para 01H de cdigo de caracteres etctera para el cdigo de caracteres FFH. La direccin ... 23BFH El nombre...... PINLIN La entrada..... Ninguno La salida...... HL = Eche A Andar de C del texto, Flag si la terminacin CTRL-STOP Modifica.. AF, BC, DE, HL, EI La rutina estndar usada por el BASIC Interpreter Mainloop para coleccionar una lnea lgica de texto de la consola. Controle transferencias para la rutina del estndar INLIN poco despus del punto donde la lnea previa ha estado cortada (23E0H). La direccin ... 23CCH El nombre...... QINLIN La entrada..... Ninguno La salida...... HL = Eche A Andar de C del texto, Flag si la terminacin CTRL-STOP Modifica.. AF, BC, DE, HL, EI La rutina estndar usada por la "entrada" manipulador de declaracin para coleccionar una lnea lgica de texto de la consola. Los personajes "? " Es exhibido por la rutina del estndar OUTDO y el control cae en la rutina del estndar INLIN. La direccin ... 23D5H El nombre...... INLIN La entrada..... Ninguno La salida...... HL = Eche A Andar de C del texto, Flag si la terminacin CTRL-STOP Modifica.. AF, BC, DE, HL, EI La rutina estndar usada por la "entrada de la LNEA" manipulador de declaracin para coleccionar una lnea lgica de texto de la consola. Los personajes son ledos del teclado hasta ya sea el RETORNO DE CARRO o las llaves CTRL-STOP se aprietan. La lnea lgica es entonces leda del carcter de la pantalla por el carcter y est posado en el amortiguador del texto Workspace Area BUF. Las coordenadas coetneas de la pantalla son primero tomadas de CSRX y CSRY y estn posado en FSTPOS. La fila de la pantalla inmediatamente por encima de la actual luego tiene su entrada en LINTTB hecho poco cero (0C29H) para detenerla extendindose lgicamente en la fila de corriente. Cada teclado que el carcter ley por la rutina del estndar CHGET es cotejado contra (0919H) la mesa crucial editora en 2439H. El control luego se traslada para una de las rutinas editoras o para el manipulador crucial predeterminado (23FFH) segn el caso. Este proceso
- 84 4. ROM BIOS Contina hasta que la C Flag sea devuelta por el CTRL-STOP o rutinas de RETORNO DE CARRO. El par de registro HL est luego colocado a apuntar hacia el principio de BUF y la rutina termina. Note que lo lleve, la bandera es despejada cuando Flag NZ es tambin devuelto para
distinguir entre un RETORNO DE CARRO o una terminacin protegida CTRL-STOP y una terminacin normal CTRL-STOP. La direccin ... 23FFH Esta rutina procesa que todos los personajes para la rutina del estndar INLIN exceptan la edicin especial las llaves. Si el carcter es, entonces un cdigo de la ETIQUETA (09H) espacios es expedido (23FFH) hasta que CSRX sea un mltiplo de ocho y uno (las columnas 1, 9, 17, 25, 33). Si el carcter es un encabezado grfico cdigo (01H), entonces es simplemente del que se hizo eco para la rutina del estndar OUTDO. Todo otro control codifica ms pequeo que 20H es de lo que se hizo eco para la rutina del estndar OUTDO despus de la cual INSFLG y CSTYLE son puestos en el cero. Pues el personajes explayable INSFLG es primero a cuadros y un espacio inserto (24F2H) si aplicable antes del carcter es de lo que se hizo eco para la rutina del estndar OUTDO. La direccin ... 2439H Esta mesa contiene la edicin especial que las llaves reconocieron por la rutina del estndar INLIN conjuntamente con las direcciones pertinentes: CODIFIQUE PARA FUNCIONAR 08H 2561H BS, backspace 12H 24E5H Indianas, palanca de apoyo intercala modo 1BH 23FEH ESC, ninguna accin 02H 260EH CTRL-B, palabra previa 06H 25F8H CTRL-F, despus palabra 0EH 25D7H CTRL-N, fin de lnea lgica 05H 25B9H CTRL-E, claro a acabar de lnea 03H 24C5H CTRL-STOP, termine El RETORNO DE CARRO 0DH 245AH, termine 15H 25AEH CTRL-U, lnea clara 7FH 2550H DEL, suprime carcter La direccin ... 245AH Esta rutina realiza la operacin de RETORNO DE CARRO para la rutina del estndar INLIN. Las coordenadas de puesta en marcha de la lnea lgica son encontradas (266CH) y el cursor cambi de direccin de la pantalla (0A2EH). Hasta 254 personajes es entonces ledo del VDP VRAM (0BD8H) y est posado en BUF. Cualquier cdigos nulos (00H) estn ignorados, cualquier personajes ms pequeos que 20H son reemplazado por un cdigo grfico (01H) del encabezado y el carcter mismo con 40H aadido. Como el fin de cada fila fsica es alcanzado LINTTB es al que se dio jaque (0C1DH) para ver si la lnea lgica se extiende hasta la siguiente fila fsica. Arrastrando espacios est entonces pelado de BUF y un byte de cero aadido como un fin de rotulador del texto. El cursor es - 85 4. ROM BIOS
Recuperado para la pantalla (09E1H) y sus coordenadas se sedimenta para la ltima fila fsica de la lnea lgica por la rutina del estndar POSIT. Un cdigo LF es expedido para la rutina del estndar OUTDO, INSFLG es puesto en el cero y la rutina termina con un cdigo de RETORNO DE CARRO (0DH) en NZ de registro de la A y Flag, C. Este cdigo de RETORNO DE CARRO
ser del que se hizo eco para la pantalla por el mainloop de rutina del estndar INLIN poco antes de que termine. La direccin ... 24C5H Esta rutina realiza la operacin CTRL-STOP para la rutina del estndar INLIN. La ltima fila fsica de la lnea lgica es encontrada por LINTTB examinante (0C1DH), CSTYLE es puesto en el cero, un byte de cero es colocado al principio de BUF y todo las variables de msica son aclaradas por la rutina del estndar GICINI. TRPTBL es entonces examinado (0454H) para ver si uno "en el ALTO" la declaracin es activo, si as es que el cursor es vuelto a arrancar (24AFH) y la rutina ultima con Flag NZ, C. BASROM es entonces a cuadros para ver si un ROM protegido corre, si as es que el cursor es vuelto a arrancar (24AFH) y la rutina ultima con Flag NZ, C. De otra manera el cursor es vuelto a arrancar (24B2H) y la rutina ultima con Flag Z, C. La direccin ... 24E5H Esta rutina realiza la operacin de Indianas para la rutina del estndar INLIN. La condicin coetnea de INSFLG es invertida y el control termina por el CSTYLE ajustando rutina (242CH). La direccin ... 24F2H Esta rutina intercala un carcter de espacio para el captulo crucial predeterminado de la rutina del estndar INLIN. El cursor es removido (0A2EH) y el cursor en uso en estos momentos se coordina tomado de CSRX y CSRY. El carcter en esta colocacin es ledo del VDP VRAM (0BD8H) y reemplazado con un espacio (0BE6H). Los personajes sucesivos son luego copiado colocacin de la columna a la derecha hasta que el fin de la fila fsica sea cumplido. En este punto LINTTB es examinado (0C1DH) para determinar si la lnea lgica est extendida, si as es que el proceso contina en la siguiente fila fsica. De otra manera el carcter tomado de la ltima colocacin de la columna es examinado, si ste es un espacio que la rutina termina reemplazando el cursor (09E1H). De otra manera la entrada de la fila fsica en LINTTB es puesta en el cero para indicar un verso lgico extendido. El nmero de la siguiente fila fsica es comparado con el nmero de filas en la pantalla (0C32H). Si la siguiente fila es lo ltimo la pantalla es enrollada arriba (0A88H), entonces de otra manera una fila en blanco es inserta (0AB7H) y el proceso copiador contina. La direccin ... 2550H Esta rutina realiza la operacin DEL para la rutina del estndar INLIN. Si la colocacin coetnea del cursor est en lo
- 86 4. ROM BIOS
La columna de la extrema derecha y la lnea lgica no est extendida ninguna accin est ocupada aparte de para escribir un espacio para el VDP VRAM (2595H). De otra manera un cdigo CORRECTO (1CH) es expedido para la rutina del estndar OUTDO y el control cae en la rutina BS. La direccin ... 2561H Esta rutina realiza la operacin BS para la rutina del estndar INLIN. El cursor es primero removido (0A2EH) y el decremented de coordenada de la columna del cursor a menos que queda a la colocacin del leftmost y la fila previa no est extendida.
Los personajes son entonces ledos del VDP VRAM (0BD8H) y el de atrs escrito colocacin a la izquierda (0BE6H) hasta que el fin de la lnea lgica es cumplido. En este punto un espacio es escrito para el VDP VRAM (0BE6H) y el carcter del cursor est recuperado (09E1H). La direccin ... 25AEH Esta rutina realiza la operacin CTRL-U para la rutina del estndar INLIN. El cursor est removido (0A2EH) y el principio de la lnea lgica localizada (266CH) y est posado en CSRX y CSRY. El verso lgico entero es entonces aclarada (25BEH). La direccin ... 25B9H Esta rutina realiza la operacin CTRL-E para la rutina del estndar INLIN. El cursor est removida (0A2EH) y el resto de la fila fsica aclarado (0AEEH). Este proceso es repetido para filas fsicas sucesivas hasta que el fin de la lnea lgica sea encontrado en LINTBB (0C1DH). El cursor est entonces recuperado (09E1H), INSFLG puesto en el cero y CSTLYE reanudacin para un cursor del bloque (242DH). La direccin ... 25D7H Esta rutina realiza la operacin CTRL-N para la rutina del estndar INLIN. El cursor est removido (0A2EH) y la ltima fila fsica de la lnea lgica encontrada por examen de LINTTB (0C1DH). Comenzando en la columna de la extrema derecha de estos personajes fsicos de la fila es que la lectura del VDP VRAM (0BD8H) hasta un carcter de poco espacio es encontrada. Las coordenadas del cursor son luego colocan una columna a la derecha de esta colocacin (0A5BH) y la rutina termina restituyendo el cursor (25CDH). La direccin ... 25F8H Esta rutina realiza la operacin CTRL-F para la rutina del estndar INLIN. El cursor est removido (0A2EH) y emocionado sucesivamente bien (2624H) hasta que un carcter poco alfanumrico sea encontrado. El cursor est luego emocionado sucesivamente bien (2624H) hasta que un carcter alfanumrico sea encontrado. La rutina termina restituyendo el cursor (25CDH).
- 87 4. ROM BIOS
La direccin ... 260EH Esta rutina realiza la operacin CTRL-B para la rutina del estndar INLIN. El cursor est removido (0A2EH) y emocionado sucesivamente izquierda (2634H) hasta que un carcter alfanumrico sea encontrado. El cursor est luego emocionado sucesivamente izquierda (2634H) hasta que un carcter poco alfanumrico sea encontrado y luego emocionado colocacin bien (0A5BH). La rutina termina restituyendo el cursor (25CDH). La direccin ... 2624H Esta rutina conmueve la colocacin del mismo del cursor bien (0A5BH), las cargas registran D con el nmero de la columna de la extrema derecha, registran E con el nmero ms bajo de la fila y entonces las pruebas para un carcter alfanumrico en la colocacin del cursor (263DH). La direccin ... 2634H
Esta rutina mueve la izquierda de colocacin del mismo del cursor (0A4CH), las cargas registran D con el nmero de la columna del leftmost y registran E con el nmero mximo de la fila. Las coordenadas coetneas del cursor son comparadas con estos valores y la rutina termina Z Flag si el cursor queda a esta colocacin. De otra manera el carcter en esta colocacin es ledo del VDP VRAM (0BD8H) e inspeccionado para la sede si es alfanumrica. Si as es que la rutina ultima a Flag NZ, entonces C otrora ultima Flag NZ, Carolina Del Norte. Los personajes alfanumricos son los dgitos "0" para "9" y las cartas "A" para "Z" y "uno" para "z". Tambin incluido es el 86H de personajes de grficos para 9FH y A6H para FFH, estos fuera cartas originalmente japonesas y debera haber quedado excluido durante la conversin para el UK ROM. La direccin ... 266CH Esta rutina encuentra el principio de una lnea lgica y los ingresos en los que su pantalla coordina registran par HL. Cada fila fsica por encima de la actual es comprobada por la mesa LINTTB (0C1DH) hasta que una fila poco extendida sea encontrada. La fila inmediatamente debajo de ste en la pantalla es el principio de la lnea lgica y su nmero de la fila es colocado en L de registro. Esto es entonces comparado con FSTPOS, lo cual contiene el nmero de la fila cuando la rutina del estndar INLIN fue primero introducido, para ver si el cursor est todava en la misma lnea. Si as es que la columna coordinada en H de registro est colocada para su colocacin inicial de FSTPOS. La H diferente de registro est colocada para la colocacin del leftmost para devolver la lnea entera.
La direccin ... 2680H, JP para. La direccin ... 2683H, JP para la rutina del estndar SYNCHR (558CH). La direccin ... 2686H, JP para la rutina del estndar CHRGTR (4666H). La direccin ... 2689H, JP para la rutina del estndar GETYPR (5597H).
El BASIC Microsoft ha evolucionado sobre los aos para su colocacin presente como el estndar de la industria. Estaba originalmente escrito para lo 8080 Microprocessor y aun la versin MSX se celebra en 8080 forma Assembly Language. Este proceso de desarrollo continuo quiere decir que hay menos instrucciones especficas a Z80 que se esperaran en un ms programa moderno. Tambin quiere decir que los cambios numerosos han sido hechos y el resultado es un programa ms bien enrollado. La estructura del Interpreter la hace improbable que un programa de aplicacin podr usar su muchas instalaciones. No importa cun la mayora de programas necesitarn cooperarle hasta cierto punto tan este captulo da una descripcin detallada de su operacin. Hay cuatro reas fcilmente identificables de importancia dentro del Interpreter, el que ms familiar para cualquier usuario es el Mainloop (4134H). Esto colecciona rayado numerado de texto de la consola y los pone en su lugar en el Program Text Area de memoria hasta que una declaracin directa sea recibida. El Runloop (4601H) es responsable de la ejecucin de un programa. Examina la primera seal de cada lnea de programa y llama la rutina apropiada para procesar el resto de la declaracin. Esto contina hasta que ninguno de los ms restos del texto de programa, el control luego
ingresos para el Mainloop. El anlisis de operands numricos o de la cuerda dentro de una declaracin es realizado por el Evaluatodor Expression (4C64H). Cada expresin est compuesta de factores, a su vez analizadas por el Evaluatodor Factor (4DC7H), cules son acoplados por operadores didicos del infix. Como hay varios tipos de operand, notablemente revisten nmeros, lo cual no puede formar en parte de una expresin en el BASIC Microsoft que el trmino "evalu" est slo acostumbrado a aplicarse a esos que pueden. De otra manera un trmino tan "computado" ser usado. El un punto a notar al examinar al Interpreter en detalle es que contiene una parte de truco el cdigo. Los escritores parecen particularmente cariosos metindose en el centro de instrucciones para proveer proposiciones mltiples de entrada para una rutina. Como un ejemplo tome la instruccin:
3E D1 Normal: LD A, 0D1H
Estando encontrado en la forma usual esto por supuesto cargar el acumulador con el valor D1H. De cualquier forma que si es introducido en "Normal" luego ser ejecutado como una instruccin POP de Delaware. El Interpreter tiene muchos captulos de modo semejante oscuros.
- 89 5. EL INTRPRETE DE BASIC ROM La direccin ... 268CH Esta rutina es usada por el Evaluatodor Expression para sustraer dos operands dobles de precisin. El primer operand es contenido en DAC y el segundo en ARG, el resultado es devuelto en DAC. Segundo el signo mantissa de operand es invertido y el control cae en la rutina de adicin. La direccin ... 269AH Esta rutina es usada por el Evaluatodor Expression para aadir dos operands dobles de precisin. El primer operand es contenido en DAC y el segundo en ARG, el resultado es devuelto en DAC. Si el segundo operand es ponga en el cero, entonces la rutina termina sin accin, si el primer operand es cero el segundo operand es copiado para DAC (2F05H) y la rutina termina. Los dos exponentes son comparados, si difieren por ms que 10^15 que la rutina termina con el operand mayor como el resultado. De otra manera la diferencia entre los dos exponentes se usa para poner en lnea el mantissae intercambiando a lo ms pequeo rightwards (27A3H), por ejemplo: 19.2100 .1921*10^2 .192100 + .7436 .7436*10^0 .007436 Si los dos signos del mantissa son iguales el mantissae se agrega luego (2759H), entonces si son diferentes el mantissae es sustrado (276BH). El exponente del resultado es simplemente el
ms grande de los dos exponentes originales. Si un excedente fue producido por adicin el mantissa de resultado es desviado enmiende un dgito (27DBH) y el exponente incrementado. Si la conduccin pone en el cero fue producido por sustraccin, entonces el mantissa de resultado es renormalizado intercambiando izquierda (2797H). El byte del guarda es entonces examinado y el resultado redondeado de arriba de si el decimoquinto dgito es iguales o ms gran que cinco. La direccin ... 2759H Esta rutina se aade que el mantissae de precisin de dos dobles contuvo en DAC y ARG y devuelve el resultado en DAC. La adicin empieza por lo menos colocaciones significativas, DAC + 7 y ARG + 7, e ingresos dos dgitos a la vez para los siete bytes. La direccin ... 276BH Esta rutina sustrae el mantissae de precisin de dos dobles contenido en DAC y ARG y devuelve el resultado en DAC. La sustraccin empieza en los bytes del guarda, DAC + 8 y ARG + 8, e ingresos dos dgitos a la vez para los ocho bytes. Si el resultado poco fluye se corrige sustrayndolo de cero e invirtiendo el mantissa signo, entonces por ejemplo: 0.17-0.85 = 0.32 = - 0.68 - 90 5. EL INTRPRETE DE BASIC ROM La direccin ... 2797H Esta rutina intercambia el mantissa de precisin doble contenido en izquierda de dgito del mismo DAC. La direccin ... 27A3H Esta rutina desva un mantissa doble de precisin bien. El nmero de dgitos a desviar es suministrado en A de registro, la direccin de byte ms significativo de mantissa es suministrada en par de registro HL. La cuenta de dgito es primero dividido a las dos para poner aparte el byte y cuentas de dgito. El nmero requerido de bytes enteros son luego derecho desviado y los bytes ms significativos puestos en el cero. Si algunos dgitos fueron especificados que el mantissa es entonces intercambiado uno ms derecho de dgito. La direccin ... 27E6H Esta rutina es usada por el Evaluatodor Expression para multiplicar dos operands dobles de precisin. El primer operand es contenido en DAC y el segundo en ARG, el resultado es devuelto en DAC. Si cualquier operand es ponga en el cero, entonces la rutina termina con un resultado de cero (2E7DH). De otra manera los dos exponentes se agregan para producir el exponente de resultado. Si esto es ms pequeo que 10 ^ - 63 que la rutina termina con un resultado de cero, si eso son mayores que 10^63 un "error de excedente" es generado (4067H). Los dos signos del mantissa son entonces tratados para producir el signo del resultado, si son lo mismo el resultado es positivo, si difieren que es negativo. Aun sin embargo el mantissae est en formato BCD que son multiplicados usando la normalidad binaria aada y desve mtodo. Para lograr esto es el primer operand sucesivamente multiplicado por dos (288AH) para producir la constante X * 80, X * 40, X * 20, X * 10, X * 8, X * 4, X * 2, y X en el amortiguador del HOLD8. El segundo operand se queda en ARG y DAC es
puesto en el cero para funcionar como el acumulador del producto. La multiplicacin procede tomando pares sucesivos de dgitos del segundo operand echando a andar con el par menos significativo. Para cada 1 bit en el par de dgito el mltiplo apropiado del primer operand se agrega para el producto. Como un ejemplo el solo 1823*96 de multiplicacin producira: 1823*10010110 = (1823*80) + (1823*10) + (1823*4) + (1823*2) Como cada par de dgito es completado el producto es intercambiado que dos dgitos enmiendan. Cuando todo siete pares de dgito han sido procesados la rutina termina renormalizando y redondeando arriba del producto (26FAH). El tiempo requerido pues una multiplicacin depende mayormente del nmero de 1 aicos en el segundo operand. El peor caso, cundo todos los dgitos es sevens, pueden hacerse cargo para 11 ms se compar al promedio de aproximadamente 7 seora - 91 5. EL INTRPRETE DE BASIC ROM
La direccin ... 288AH Esta rutina duplica un mantissa doble de precisin tres veces sucesivas para producir la productos X * 2, X * 4 y X * 8. La direccin de byte menos significativo de mantissa es suministrada en par de registro Delaware. Los productos se guardan en direcciones sucesivamente inferiores comenzando inmediatamente debajo del operand. La direccin ... 289FH Esta rutina es usada por el Evaluatodor Expression para dividir dos operands dobles de precisin. El primer operand es contenido en DAC y el segundo en ARG, el resultado es devuelto en DAC. Si el primer operand es ponga en el cero, entonces la rutina termina con un resultado de cero si el segundo operand es cero una "divisin por el cero" el error es generado (4058H). De otra manera los dos exponentes son sustrados para producir el exponente de resultado y los dos signos del mantissa procesados para producir el signo del resultado. Si son lo mismo el resultado es positivo, entonces si difieren es negativo. El mantissae est dividido usando el mtodo largo normal de divisin. El segundo operand es repetidamente sustrado desde el comienzo hasta el poco flujo para producir un solo dgito del resultado. El segundo operand se agrega luego de regreso a restituir el resto (2761H), el dgito es almacenado en el AGARRE y el primer operand es intercambiado izquierda de dgito. Cuando el primer operand ha estado completamente intercambiado apagado el resultado es emulado de AGARRE para DAC entonces renormalizado y redondeado levantado (2883H). El tiempo requerido pues una divisin se maximiza de aproximadamente 25 ms cuando el primer operand es compuesto mayormente de nines y el segundo operand de mismos. Esto requerir el nmero mximo de sustracciones. La direccin ... 2993H Esta rutina es usada por el Evaluatodor Factor para ejercer los "Colorados" funcin para un operand de precisin doble contenido en DAC. El operand es primero multiplicado (2C3BH) a las 1 / (2 * la PI) a fin de que la unidad es propia de un completo ciclo de 360 grados. El operand luego tiene 0.25 (90 grados) sustrados (2C32H), su signo del mantissa est invertido (2E8DH) y control cae en el "pecado" rutina.
La direccin ... 29ACH Esta rutina es usada por el Evaluatodor Factor para ejercer el "pecado" funcin para un operand de precisin doble contenido en DAC. El operand es primero multiplicado (2C3BH) a las 1 / (2 * la PI) a fin de que la unidad es propia de un completo ciclo de 360 grados. Como la funcin es peridica slo la parte fraccionada del operand es ahora requerido. Esto es extrado empujando al operand (2CCCH) obteniendo la parte de entero (30CFH) y copindola para ARG (2C4DH), haciendo estallar el operand entero para DAC (2CE1H) y luego sustrayendo la parte de entero (268CH).
- 92 5. EL INTRPRETE DE BASIC ROM El primer dgito del mantissa es entonces examinado para determinar el cuadrante de operand. Si est en el primer cuadrante, entonces es igual. Si est en el segundo cuadrante, entonces es sustrado de 0.5 (180 grados) para reflejarlo acerca del Eje Vertical. Si est en el tercer cuadrante, entonces es sustrado de 0.5 (180 grados) para reflejarlo acerca del axis de la X. Si est en el cuarto cuadrante 1.0 (360 grados) es sustrado para reflejarlo acerca de ambos ejes. La funcin es entonces computada por la aproximacin polinmica (2C88H) usando la lista de coeficientes en 2DEFH. stas son las primeras ocho condiciones en la X-(de serie Taylor X ^ 3/3!)+(X ^ 5/5!)- (X ^ 7/7 ! ) ... con los coeficientes multiplicado por los factores sucesivos de 2 * PI para compensar el sarro inicial. La direccin ... 29FBH Esta rutina es usada por el Evaluatodor Factor para ejercer la funcin "color caf claro" para un operand de precisin doble contenido en DAC. La funcin es computada usando el = PECADO trigonomtrico (X) de BRONCEADO de identidad (X) / Colorados (X). La direccin ... 2A14H Esta rutina es usada por el Evaluatodor Factor para ejercer al "ATN" funcin para un operand de precisin doble contenido en DAC. La funcin es computada por la aproximacin polinmica (2C88H) usando la lista de coeficientes en 2E30H. stas son las primeras ocho condiciones en la X-(de serie Taylor X ^ 5/5) - ... con los coeficientes modificados ligeramente para resumir la serie (x ^ 3/3) (X ^ 7/7). La direccin ... 2A72H Esta rutina es usada por el Evaluatodor Factor para ejercer el "leo" funcin para un operand de precisin doble contenido en DAC. La funcin es computada por la aproximacin polinmica usando la lista de coeficientes en 2DA5H. La direccin ... 2AFFH Esta rutina es usada por el Evaluatodor Factor para ejercer al "SQR" funcin para un operand de precisin doble contenido en DAC. La funcin es computada usando el proceso de Newton-Raphson, un programa equivalente de BASIC es:
10 INPUT"NUMBER ";X 20 ADIVINAN = 10 30 FOR N = 1 TO 7 40 ADIVINAN A = (GUESS+X/GUESS) /2 50 SIGUIENTE N 60 ESCRIBEN EN LETRAS DE IMPRENTA ADIVINANZA 70 PRINT SQR (X) El citado anteriormente programa usa una adivinanza inicial fija. Mientras esto es - 93 5. EL INTRPRETE DE BASIC ROM
Precisa sobre un mximum limitado de rango la exactitud slo ser lograda si la adivinanza inicial est junta a la raz. El mtodo usado por el ROM es disminuir a la mitad el exponente, con redondeo arriba, y luego dividir los primeros dos dgitos del operand a las cuatro e incrementar el primer dgito. La direccin ... 2B4AH Esta rutina es usada por el Evaluatodor Factor para ejercer al "EXP" funcin para un operand de precisin doble contenido en DAC. El operand es primero multiplicado por 0.4342944819, lo cual es LEO (e) para Base 10, a fin de que el problema se convierte en computar 10 ^ X en vez del l ^ X. Esto que los resultados en la simplificacin considerable como el entero la parte pueden ser con los que se trat fcilmente. La funcin es entonces computada por la aproximacin polinmica usando la lista de coeficientes en 2D6BH. La direccin ... 2BDFH Esta rutina es usada por el Evaluatodor Factor para ejercer al "RND" funcin para un operand de precisin doble contenido en DAC. Si el operand es ponga en el cero el nmero aleatorio actual es copiado para DAC de RNDX y la rutina termina. Si el operand es negativo, entonces es copiado para RNDX para colocar el nmero aleatorio actual. El nmero aleatorio nuevo se produce copiando a RNDX a HACER, la constante en 2CF9H cumplir ARG, la constante en 2CF1H para DAC y luego multiplicando (282EH). Los catorce dgitos menos significativos del producto doble de largo son emulados para RNDX para formar el mantissa del nmero aleatorio nuevo. El byte del exponente en DAC es determinado para 10^0 para devolver un valor en el rango 0 a 1. La direccin ... 2C24H Esta rutina es usada por los manipuladores "nuevos", "cristalinos" y "andados" de declaracin para inicializar a RNDX con la constante en 2D01H. La direccin ... 2C2CH Esta rutina aade la constante a cuya direccin est suministrada en par de registro HL para el operand doble de precisin contuvo en DAC. La direccin ... 2C32H Esta rutina sustrae la constante a cuya direccin est suministrada en par de registro HL del
operand doble de precisin contuvo en DAC. La direccin ... 2C3BH Esta rutina multiplica el operand de precisin doble contenido en DAC por la constante a cuya direccin est suministrado en par de registro HL.
- 94 5. EL INTRPRETE DE BASIC ROM La direccin ... 2C41H Esta rutina divide el operand de precisin doble contenido en DAC por la constante a cuya direccin est suministrado en par de registro HL. La direccin ... 2C47H Esta rutina realiza la operacin de relacin en el operand doble de precisin contenida en DAC y la constante a cuya direccin est suministrada en par de registro HL. La direccin ... 2C4DH Esta rutina copia un operand de precisin de ocho bytes de doble de DAC para ARG. La direccin ... 2C59H Esta rutina copia un operand de precisin de ocho bytes de doble de ARG para DAC. La direccin ... 2C6FH Esta rutina intercambia los ocho bytes en DAC con los ocho bytes actualmente en la raz de la pila Z80. La direccin ... 2C80H Esta rutina invierte el signo del mantissa del operand contenido en DAC (2E8DH). La misma direccin es entonces empujada encima de la pila para restituir el signo cuando la persona que llama termina. La direccin ... 2C88H Esta rutina genera una serie extraa basada en el operand de precisin doble contenido en DAC. La serie es de la formalidad: X ^ 1 * (Kn) + X ^ 3 * (Kn-1) x ^ 5 * (Kn-2) + X ^ 5 * (Kn-3) La direccin de la lista de coeficiente es suministrada en par de registro HL. El primer byte de la lista contiene la cuenta de coeficiente, los coeficientes dobles de precisin siguen con K1 primero y Kn de ltimo. La serie pareja es generada (2C9AH) y multiplicada (27E6H) por el operand original. La direccin ... 2C9AH Esta rutina genera una serie pareja basada en el operand de precisin doble contenido en
DAC. La serie es de la formalidad: X ^ 0 * (Kn) x ^ 2 * (Kn-1) x ^ 4 * (Kn-2) x ^ 6 * (Kn-3) La direccin de la lista de coeficiente es suministrada en registro - 95 5. EL INTRPRETE DE BASIC ROM El par HL. El primer byte de la lista contiene la cuenta de coeficiente, los coeficientes dobles de precisin siguen con K1 primero y Kn de ltimo. El mtodo usado para computar el polinomio es conocido como el mtodo de Hornente. Slo precisa una multiplicacin y una adicin por el trmino, el equivalente de BASIC es: 10 X=X*X 20 EL PRODUCTO = 0 30 RESTITUYEN 100 40 LEEN LA CUENTA 50 FOR N = 1 PARA CONTAR 60 LEEN LA K 70 EL PRODUCTO = (PRODUCT*X) + K 80 SIGUIENTE N 90 ACABAN 100 DATOS 8 Kn-7 de 110 DATOS Kn-6 de 120 DATOS Kn-5 de 130 DATOS Kn-4 de 140 DATOS Kn-3 de 150 DATOS Kn-2 de 160 DATOS Kn-1 de 170 DATOS Kn de 180 DATOS El polinomio es tramitado del coeficiente final directo para el primer coeficiente a fin de que el producto parcial puede usarse para ahorrar operaciones innecesarias. La direccin ... 2CC7H Estos empujones de rutina un operand de precisin de ocho bytes de doble de ARG encima del Z80 se apilan bien. La direccin ... 2CCCH Estos empujones de rutina un operand de precisin de ocho bytes de doble de DAC encima del Z80 se apilan bien. La direccin ... 2CDCH Estas gaseosas de rutina un operand de precisin de ocho bytes de doble del Z80 se apilan bien en ARG. La direccin ... 2CE1H
Estas gaseosas de rutina un operand de precisin de ocho bytes de doble del Z80 se apilan bien en DAC. La direccin ... 2CF1H Esta mesa contiene la precisin doble que las constantes usaron por las rutinas de matemticas. Las primeras tres constantes tienen cero en la colocacin del exponente en su estado actual en un especial forma intermedia - 96 5. EL INTRPRETE DE BASIC ROM Usado por el generador aleatorio de nmero. ADDR. ADDR PERSEVERANTE. La CONSTANTE 2CF1H .14389820420821 RND 2DAEH 6.2503651127908 2CF9H .21132486540519 RND 2DB6H - 13.682370241503 2D01H .40649651372358 2DBEH 8.5167319872389 2D09H .43429448190324 PONGA EN BITCORA a (e) 2DC6H 5 LEO 2D11H .50000000000000 2DC7H 1.0000000000000 2D13H .00000000000000 2DCFH - 13.210478350156 2D1BH 1.0000000000000 2DD7H 47.925256043873 2D23H .25000000000000 2DDFH - 64.906682740943 2D2BH 3.1622776601684 SQR (10) 2DE7H 29.415750172323 2D33H .86858896380650 de 8 PECADO de 2 ^ LOGARITMOS (e) de 2DEFH 2D3BH 2.3025850929940 2DF0H de 1 / LEOS (e) - .69215692291809 2D43H 1.5707963267949 PI/2 2DF8H 3.8172886385771 2D4BH .26794919243112 BRONCEE a (PI/12) 2E00H - 15.094499474801 2D53H que 1.7320508075689 BRONCEAN (PI/3) 2E08H 42.058689667355 2D5BH .52359877559830 PI/6 2E10H - 76.705859683291 2D63H .15915494309190 1 / (2 ^ la PI) 2E18H 81.605249275513 2D6BH 4 EXP 2E20H - 41.341702240398 2D6CH 1.0000000000000 2E28H 6.2831853071796 2D74H 159.37415236031 2E30H 8 ATN 2D7CH 2709.3169408516 2E31H - .05208693904000 2D84H 4497.6335574058 2E39H .07530714913480 2D8CH 3 EXP 2E41H - .09081343224705 2D8DH 18.312360159275 2E49H .11110794184029 2D95H 831.40672129371 2E51H - .14285708554884 2D9DH 5178.0919915162 2E59H .19999999948967 2DA5H 4 el LEO 2E61H - .33333333333160 2DA6H - .71433382153226 2E69H 1.0000000000000 La direccin ... 2E71H Esta rutina devuelve el signo del mantissa de un operand Point Flotante contenido en DAC. El byte del exponente es probado y el resultado regres en A de registro y las banderas: El cero....... Un = 00H, Flag Z, Carolina Del Norte Positive ... UN = 01H, Flag NZ, Carolina Del Norte Negative ... A=FFH, Flag NZ, C La direccin ... 2E7DH
Esta rutina simplemente pone en el cero el byte del exponente en DAC. La direccin ... 2E82H Esta rutina es usada por el Evaluatodor Factor para ejercer el "sistema de frenos ABS" funcin para un operand contenido en DAC. El signo de operand's es primero a cuadros (2EA1H), si es positivo que la rutina simplemente termine. El tipo de operand es entonces a cuadros por la rutina del estndar GETYPR. Si es una cuerda un "bodorrio de tipo" error es generada (406DH). Si es un entero, entonces es negado - 97 5. EL INTRPRETE DE BASIC ROM (322BH). Si es una precisin doble o singularice, entonces el operand de precisin que el signo del mantissa mordi en DAC est invertido. La direccin ... 2E97H Esta rutina es usada por el Evaluatodor Factor para ejercer al "SGN" funcin para un operand contenido en DAC. Los operand's en los que el signo es comprobado (2EA1H), extendido registran par HL y luego colocados en DAC como un entero: El cero....... El 0000H El positivo ... 0001H La negativa ... FFFFH La direccin ... 2EA1H Esta rutina devuelve el signo de un operand contenido en DAC. El tipo de operands es primero a cuadros por la rutina del estndar GETYPR. Si es una cuerda un "bodorrio de tipo" error es generada (406DH). Si es una sola precisin o dblese, entonces el operand de precisin el signo del mantissa es examinado (2E71H). Si es un entero su valor es tomado de DAC + 2 y traducidos en las banderas mostrados en 2E71H. La direccin ... 2EB1H Estos empujones de rutina un operand de precisin de cuatro bytes de solo de DAC encima del Z80 se apilan bien. La direccin ... 2EC1H Esta rutina emula los contenidos de registro C, B, E y D para DAC. La direccin ... 2ECCH Esta rutina emula los contenidos de DAC para registro C, B, E y D. La direccin ... 2ED6H Estos registros de cargas de rutina C, B, E y D de posiciones ascendentemente secuenciales comenzando en la direccin abastecida en registro parean a HL. La direccin ... 2EDFH
Estos registros de cargas de rutina E, D, C y B de posiciones ascendentemente secuenciales comenzando en la direccin abastecida en registro parean a HL. La direccin ... 2EE8H Esta rutina copia un solo operand de precisin de DAC para - 98 5. EL INTRPRETE DE BASIC ROM La direccin abastecida en par de registro HL. La direccin ... 2EEFH Esta rutina copia cualquier operand de la direccin abastecida en par de registro HL para ARG. El largo del operand es contenido en VALTYP: 2 = Integer, 3 = String, 4 = El Solo Precision, 8 = El Doble Precision. La direccin ... 2F05H Esta rutina copia cualquier operand de ARG para DAC. El largo del operand es contenido en VALTYP: 2 = Integer, 3 = String, 4 = El Solo Precision, 8 = El Doble Precision. La direccin ... 2F0DH Esta rutina copia cualquier operand de DAC para ARG. El largo del operand es contenido en VALTYP: 2 = Integer, 3 = String, 4 = El Solo Precision, 8 = El Doble Precision. La direccin ... 2F21H Esta rutina es usada por el Evaluatodor Expression para encontrar la relacin (< > = ) entre dos solos operands de precisin. La primera parte en la que el operand es contenido registra a C, B, E y D y el segundo en DAC. El resultado es devuelto en A de registro y las banderas: Operand 1 = Operand 2 ... UN = 00H, Flag Z, Carolina Del Norte Operand 1 < Operand 2 ... UN = 01H, Flag NZ, Carolina Del Norte Operand 1 > Operand 2 ... A=FFH, Flag NZ, C Debera ser notable que para operadores del relational que la negativa del maximally de mis saludos afectuosos del Evaluatodor Expression numera como nmeros pequeos y positivos maximally tan grandes. La direccin ... 2F4DH Esta rutina es usada por el Evaluatodor Expression para encontrar la relacin (< > = ) entre dos operands de entero. La primera parte que el operand es contenido en par de registro Delaware y el segundo en registro parea a HL. Los resultados estn por lo que respecta a la sola versin de precisin (2F21H). La direccin ... 2F83H Esta rutina es usada por el Evaluatodor Expression para encontrar la relacin (< > = ) entre dos operands dobles de precisin. El primer operand es contenido en DAC y el segundo en ARG. Los resultados estn por lo que respecta a la sola versin de precisin (2F21H).
La direccin ... 2F8AH Esta rutina es usada por el Evaluatodor Factor a aplicar lo - 99 5. EL INTRPRETE DE BASIC ROM
"CINT" funcione para un operand contenido en DAC. El tipo del operand es primero a cuadros por la rutina del estndar GETYPR, si es ya entero que la rutina simplemente termina. Si es una cuerda un "bodorrio de tipo" error es generada (406DH). Si es una sola precisin u operand doble de precisin ella es convertido a un entero binario indicado a travs de seas en par de registro Delaware (305DH) y luego colocado en DAC como un entero. Fuera de alcance aprecia el resultado en un "Overflow" error (4067H). La direccin ... 2FA2H Esta rutina inspecciona si DAC contiene la sola precisin operand - 32768, si as es que ella la reemplaza con el 8000H de equivalente de entero. Este paso es precisado durante la conversin numrica (3299H) de entrada por el rango asimtrico de nmero entero. La direccin ... 2FB2H Esta rutina es usada por el Evaluatodor Factor para ejercer al "CSNG" funcin para un operand contenido en DAC. El tipo de operand's es primero a cuadros por la rutina del estndar GETYPR, si es ya sola precisin que la rutina simplemente termina. Si es una cuerda un "bodorrio de tipo" error es generada (406DH). Si es doble, entonces la precisin VALTYP se vare (3053H) y el mantissa redondeado arriba del sptimo dgito (2741H). Si el operand es un entero, entonces se convierte de binario para un mximum de cinco dgitos BCD por divisiones sucesivas usando las constantes 10000, 1000, 100, 10, 1. Estos son colocados en DAC para formar el solo mantissa de precisin. El exponente es igual al nmero de dgitos significativos en el mantissa. Por ejemplo si hay cinco, entonces el exponente sera 10^5. La direccin ... 3030H Esta mesa contiene las cinco constantes usadas por el "CSNG" rutina: - - 1000, - - 10, - 10000, 100, 1 La direccin ... 303AH Esta rutina es usada por el Evaluatodor Factor para ejercer al "CDBL" funcin para un operand contenido en DAC. El tipo de operand's es primero a cuadros por la rutina del estndar GETYPR, si es ya precisin doble que la rutina simplemente termina. Si es una cuerda un "bodorrio de tipo" error es generada (406DH). Si es un entero l se convierte primero a singularizar precisin (2FC8H), los ocho dgitos menos significativos son entonces puestos en el cero y VALTYP se sediment para 8. La direccin ... 3058H Esta rutina inspecciona que el operand en uso en estos momentos es un tipo de la cuerda, en caso de que no un "bodorrio de tipo" error es generado (406DH).
La direccin ... 305DH Esta rutina es usada por el "CINT" rutina (2F8AH) para convertir una precisin del soltero BCD o el operand doble de precisin en un entero binario indicado a travs de seas en par de registro Delaware, devuelve C Flag si un excedente ha ocurrido. Los dgitos sucesivos son tomados del mantissa y se suman al producto echando a andar con lo ms significativo. Despus de cada adicin que el producto est multiplicado por diez. El nmero de dgitos a proceso es determinado por el exponente, por ejemplo cinco dgitos estaran prendados de un exponente de 10^5. Finalmente el signo del mantissa es comprobado y el producto negado (3221H) si es necesario. La direccin ... 30BEH Esta rutina es usada por el Evaluatodor Factor para ejercer el "apuro" funcin para un operand contenido en DAC. El tipo de operand's es primero a cuadros por la rutina del estndar GETYPR, si es un entero que la rutina simplemente termina. El signo del mantissa es entonces a cuadros (2E71H), si es positivo que el control transfiere para el "INT" rutina (30CFH). De otra manera el signo est invertido para positivo, el "INT" funcin es realizado (30CFH) y el signo recuperado para negar. La direccin ... 30CFH Esta rutina es usada por el Evaluatodor Factor para ejercer al "INT" funcin para un operand contenido en DAC. El tipo de operand's es primero a cuadros por la rutina del estndar GETYPR, si es un entero que la rutina simplemente termina. El nmero de dgitos fraccionados est resuelto sustrayndole al exponente de la cuenta de dgito del tipo, 6 para la sola precisin, 14 para la precisin doble. Si el signo del mantissa es positivo, entonces estos dgitos fraccionados son simplemente puestos en el cero. Si el signo del mantissa es negativo, entonces cada dgito fraccionado es examinado antes de que sea puesto en el cero. Si todos los dgitos fueron previamente ponga en el cero, entonces la rutina simplemente termina. De otra manera - 1.0 se agregan para el operand por la sola rutina de adicin de precisin (324EH) o la rutina doble (269AH) de adicin de precisin. Debera ser notable que el tipo de operand no se vara normalmente por el "CINT" funcin. La direccin ... 314AH Esta rutina multiplica los enteros binarios sin firmar en pares de registro BC y Delaware, el resultado es devuelto en par de registro Delaware. El cambio estndar y se aade que el mtodo es usado, el producto lo hace sucesivamente multiplicado a las dos y el registro el par AC se sum a l para cada 1 bit en par de registro Delaware. La rutina es usada por la rutina Variable (5EA4H) de bsqueda para computar una colocacin de element's dentro de un Array, un error "fuera del alcance escrito debajo de una letra" es generado (601DH) si un excedente ocurre.
La direccin ... 3167H Esta rutina es usada por el Evaluatodor Expression para sustraer dos operands de entero. La primera parte que el operand es contenido en par de registro Delaware y el segundo en par de registro HL, el resultado es devuelto en DAC. El segundo operand es negado (3221H) y el control cae en la rutina de adicin. La direccin ... 3172H Esta rutina es usada por el Evaluatodor Expression para aadir dos operands de entero. La primera parte que el operand es contenido en par de registro Delaware y el segundo en par de registro HL, el resultado es devuelto en DAC. Los operands binarios firmados estn normalmente justamente aadidos y colocados en DAC. Sin embargo, si un excedente ha ocurrido, entonces ambos operands se convierten para singularizar transferencias de precisin (2FCBH) y de control para el solo sumador de precisin (324EH). Un excedente ha ocurrido cuando ambos operands son del mismo signo y el resultado lo es del signo opuesto, por ejemplo: 30000+15000 = - 20536 La direccin ... 3193H Esta rutina es usada por el Evaluatodor Expression para multiplicar dos operands de entero. La primera parte que el operand es contenido en par de registro Delaware y el segundo en par de registro HL, el resultado es devuelto en DAC. Los dos signos del operand son salvados por ahora y ambos operands hicieron positivo (3215H). Los ingresos de multiplicacin usando el cambio binario estndar y aade mtodo con par de registro HL como el acumulador del producto, par de registro BC conteniendo el primer operand y el par de registro Delaware el segundo. Si el producto excede 7FFFH en cualquier momento durante la multiplicacin ambos operands se convierte para singularizar precisin (2FCBH) y controle transferencias para el solo multiplicador de precisin (325CH). De otra manera los signos iniciales estn recuperados y, si difirieran, el producto negado antes de que siendo colocado en DAC como un entero (321DH). La direccin ... 31E6H Esta rutina es usada por el Evaluatodor Expression para el entero divida (\ ) dos operands de entero. La primera parte que el operand es contenido en par de registro Delaware y el segundo en par de registro HL, el resultado es devuelto en DAC. Si el segundo operand es cero que una "divisin por" el error de "cero" es generado (4058H), entonces de otra manera los dos signos del operand son salvados y ambos operands hicieron positivo (3215H). Los ingresos de divisin usando el cambio binario estndar y sustrae mtodo con par de registro HL conteniendo el resto, par de registro BC que el segundo operand y registro arregla en pares Delaware el primer operand y el producto. Cuando la divisin es completa los signos iniciales estn recuperados y, si difirieran, el producto es negado antes de que siendo colocado en DAC como un entero (321DH).
La direccin ... 3215H Esta rutina se usa para hacer dos enteros binarios indicados a travs de seas, en pares de
registro HL y Delaware, positivo. Ambos los signos iniciales del operand son devueltos como una bandera adentro bit 7 de B de registro: 0 = De La Misma Forma, 1 = Different. Cada operand es entonces examinado y, si es negativo, positivo hecho sustrayndolo de cero. La direccin ... 322BH Esta rutina es usada por el "sistema de frenos ABS" funcin para hacer un entero negativo contenida en positivo DAC. El operand es tomado de DAC, negado y luego recoloca en DAC (3221H). Si el valor de operand es 8000H, entonces se convierte para singularizar precisin (2FCCH) como no hay entero de valor + 32768. La direccin ... 323AH Esta rutina es usada por el Evaluatodor Expression para operands dos de entero "a la ltima". La primera parte que el operand es contenido en par de registro Delaware y el segundo en par de registro HL, el resultado es devuelto en DAC. El signo del primer operand es salvado y los dos operands divididos (31E6H). Como el resto es devuelto doblado por el par de registro de proceso de divisin Delaware es intercambi un derecho del lugar para restituirlo. El signo del primer operand est entonces recuperado y, si es negativo, que lo dems sea negado antes de que siendo colocado en DAC como un entero (321DH). La direccin ... 324EH Esta rutina es usada por el Evaluatodor Expression para aadir dos solos operands de precisin. La primera parte en la que el operand es contenido registra a C, B, E, D y el segundo en DAC, el resultado es devuelto en DAC. El primer operand es copiado para ARG (3280H), el segundo operand se convierte para duplicar transferencias de precisin (3042H) y de control para el sumador doble (269AH) de precisin. La direccin ... 3257H Esta rutina es usada por el Evaluatodor Expression para sustraer dos solos operands de precisin. La primera parte en la que el operand es contenido registra a C, B, E, D y el segundo en DAC, el resultado es devuelto en DAC. El segundo operand es negado (2E8DH) y el control se traslada para el solo sumador de precisin (324EH). La direccin ... 325CH Esta rutina es usada por el Evaluatodor Expression para multiplicar dos solos operands de precisin. La primera parte en la que el operand es contenido registra a C, B, E, D y el segundo en DAC, el resultado es devuelto en DAC. El primer operand es copiado para ARG (3280H), el segundo operand se convierte para duplicar transferencias de precisin (3042H) y de control para el multiplicador doble (27E6H) de precisin.
- 103 5. EL INTRPRETE DE BASIC ROM La direccin ... 3265H Esta rutina es usada por el Evaluatodor Expression para dividir dos solos operands de precisin. La primera parte en la que el operand es contenido registra a C, B, E, D y el segundo en DAC, el resultado es devuelto en DAC. La primera parte y segundos operands son intercambiados a fin de que la primera parte est en DAC y el segundo en los registros. El segundo operand es entonces copiado para ARG (3280H), el primer operand se convierte para
duplicar transferencias de precisin (3042H) y de control para el divisor doble (289FH) de precisin. La direccin ... 3280H Esta rutina copia el solo operand de precisin contenido en registro C, B, E y D para ARG y luego pone en el cero los cuatro bytes menos significativos. La direccin ... 3299H Esta rutina convierte un nmero en forma textual para uno de los tipos numricos internos estndar, est usado durante la tokenizacin y por el "VAL", "la ENTRADA" y los manipuladores "ledos" de Declaracin. En las proposiciones del par de registro de entrada HL para el primer carcter de la cuerda del texto a ser convertido. En par de la registro de la salida HL apunta hacia el carcter siguiendo la cuerda, el operand numrico est en DAC y el cdigo de tipo en VALTYP. Los ejemplos de los tres tipos son: + FFH 7FH + El Entero + 32767 + 42H 17H 39H 04H + Singularice .173904*10^2 De Precisin + C2H 17H 39H 04H 62H 70H 93H 13H + Duplique Precisin - .17390462709313*10^2 Figura 41: El numrico Types en DAC Un entero es un nmero de diecisis ratos de binario en forma de complemento de two's, es LSB almacenado primero, segundo MSB en DAC + 2. Un entero puede extenderse de 8000H (- 32768) para 7FFFH (+ 32767). Un punto flotante nmero consta de un byte del exponente y un mantissa tres o de siete bytes. El exponente es guardado en forma binaria firmada y puede alinear en orden a de 01H (- 63) a travs de 40H (0) a 7FH (+ 63), el valor especial de 00H sirve para el cero de nmero. Estos valores del exponente son para un mantissa normalizado. El Interpreter presenta nmeros de la forma de exponente para el usuario con uno - 104 5. EL INTRPRETE DE BASIC ROM
El dgito principal, esto resulta en un rango asimtrico del exponente de E-64 para E + 62. El bit 7 del byte del exponente mantiene el signo del mantissa, 0 para positivo y 1 para la negativa, el mantissa mismo es guardado en forma apiada BCD con dos dgitos por el byte. Debera ser notable que el Interpreter usa los contenidos de VALTYP para determinar el tipo de un nmero, no el formato del nmero mismo. La conversin comienza examinando el primer smbolo del texto. Si ste es uno "y" control se
traslada para la rutina especial (4EB8H) de conversin del radix, entonces si es un carcter principal del signo es por ahora ahorrado. Los smbolos numricos sucesivos son luego tomados y aadidos para el producto de entero con multiplicaciones apropiadas a las diez como cada dgito nuevo es encontrado. Si el valor del producto excede 32767, o un punto decimal es encontrado, entonces el producto se convierte para singularizar precisin y cualquier ms personajes acomodadas directamente en DAC. Si un sptimo dgito es encontrado, entonces el producto se vara para duplicar precisin, si ms que catorce dgitos son encontrados que los dgitos excedentes son ledos pero ignorados. La conversin cesa cuando un carcter poco numrico es encontrado. Si esto un carcter de definicin de tipo ("el %", o "!") la rutina apropiada de conversin se llama y que transferencias de control para el punto de la salida (331EH). Si es un prefijo del exponente ("E", "e", "D" o "d") una de las rutinas de conversin tambin ser usada y luego los siguientes dgitos mutaron para un exponente binario en E de registro. En el punto de la salida (331EH) el tipo de product's es comprobado por la rutina del estndar GETYPR. Si est soltera la precisin o duplique precisin, entonces el exponente se calcula por primero sustraer la cuenta fraccionada de dgito, en registro B, de la cuenta total de dgito, adentro se registra D, para producir la cuenta delantera de dgito. Esto se agrega luego a cualquier exponente explcitamente declarado, adentro registra E, y colocado en DAC + 0 como el exponente. El carcter principal del signo est recuperado y el producto negado si es requerido (2E86H), si el producto es entero que la rutina luego termina. Si el producto est soltera el control de precisin termina revisando en busca del valor especial de - 32768 (2FA2H). Si el producto es al doble, entonces el control de precisin termina redondeando arriba del decimoquinto dgito (273CH). La direccin ... 340AH Esta rutina es usada por el manipulador de error para exteriorizar el mensaje "de adentro" (6678H) seguido por el nmero de la lnea abastecido en par de registro HL (3412H). La direccin ... 3412H Estos despliegues de rutina en los que el entero binario sin firmar suministr registran par HL. El operand es colocado en DAC como un entero (2F99H), convertido para texto (3441H) y luego exhibido (6677H).
- 105 5. EL INTRPRETE DE BASIC ROM La direccin ... 3425H Esta rutina convierte al operand numrico contenido en DAC a la forma textual en FBUFFR. La direccin del primer carcter del texto resultante es devuelta en par de registro HL, el texto est terminado por un byte de cero. El operand se convierte primero a duplicar precisin (375FH). Los dgitos BCD del mantissa son entonces desempacados, convertidos para el ASCII y estn posado en FBUFFR (36B3H). La colocacin del punto decimal es determinada por el exponente, por ejemplo: .999*10 ^ + 2 = 99.9 .999*10 ^ + 1 = 9.99 .999*10 ^ + 0 = .999 .999*10 ^ - 1 = .0999
Si el exponente est fuera del rango 10 ^ - 1 para 10^14 el nmero se replantea en forma exponencial. En este caso el punto decimal est posado despus del primer dgito y el exponente se convierte de binario y sigue el mantissa. Un punto alternativo de entrada para la rutina existe en 3426H para la "impresin USANDO" manipulador de declaracin. Con este punto de entrada el nmero de personajes para prefijar al punto decimal le es suministrado en registro B, el nmero de personajes para apuntar apuro l en C de registro y un byte del formato en A de registro: 76543210 + 1 , $ Sign 0 + Figura 42: El formato Byte La operacin en este modo es medianamente similar al modo normal pero con la adicin de instalaciones adicionales. Una vez que el operand se ha convertido para duplicar precisin la forma exponencial estar asumido si fue mordido 0 del byte del formato est listo. El mantissa es intercambiado a la derecha en DAC y redondeado arriba para perder dgitos no deseados (377BH) de postfijo. Como el mantissa es convertido a las comas de ASCII (36B3H) estarn insertas en las proposiciones apropiadas si son mordidas 6 del byte del formato est listo. Durante la postconversin formateando (351CH) colocaciones de prefijo sin uso se llenar de asteriscos si es mordido 5 est listo, un prefijo de libra puede agregarse colocando bit 4. El bit 3 posibilita el signo para nmeros positivos si es colocado, de otra manera un espacio es usado. Mordido de 2 posiciones sociales de cualquier firman en el frente si reanudan y al fondo si se sedimentan. El punto de entrada para la rutina en 3441H se usa para convertir enteros sin firmar, notablemente revestir nmeros, para su forma textual. Para ejemplo 9000H, estando tratado como un entero normal, se convirti a - 28672. Usando este punto de entrada 36864 sera producido en lugar de eso. El operand se convierte por ah sucesivo - 106 5. EL INTRPRETE DE BASIC ROM
La divisin con los factores 10000, 1000, 100, 10 y 1 y los dgitos resultantes colocaron en FBUFFR (36DBH). La direccin ... 3710H Esta mesa contiene las cinco constantes usadas por la rutina numrica de salida: 10000, 1000, 100, 10, 1. La direccin ... 371AH Esta rutina es usada por el "N$" funcin para convertir a un operand numrico contenido en DAC a la forma textual. La B de registro est cargada de las transferencias de tamao en coro (1) y de control para la rutina general (3724H) de conversin. La direccin ... 371EH
Esta rutina es usada por el "OCT$" funcin para convertir a un operand numrico contenido en DAC a la forma textual. La B de registro est cargada de las transferencias de tamao en coro (3) y de control para la rutina general (3724H) de conversin. La direccin ... 3722H Esta rutina es usada por el "HEX$" funcin para convertir a un operand numrico contenido en DAC a la forma textual. La B de registro est cargada del tamao en coro (4) y el operand mut para un entero binario en par de registro HL (5439H). Los grupos sucesivos de 1, 3 o 4 aicos son rightwards intercambiados fuera del operand, convertidos para los dgitos de ASCII y estn posado en FBUFFR. Cundo el operand es todo pone en el cero la rutina termina con la direccin del primer carcter del texto en par de registro HL, la cuerda est terminada con un byte de cero. La direccin ... 3752H Esta rutina es usada durante la salida numrica para devolver la cuenta de dgito de operand en B de registro y la direccin de su byte menos significativo en par de registro HL. Para sola precisin B = 6 y HL=DAC + 3, para precisin doble B = 14 y HL=DAC + 7. La direccin ... 375FH Esta rutina es usada durante la salida numrica para convertir al operand numrico en DAC a duplicar precisin (303AH). La direccin ... 377BH Esta rutina es usada durante la salida numrica para intercambiar el mantissa en DAC rightwards (27DBH), lo inverso de la cuenta de dgito es abastecido en A de registro. El resultado est entonces redondeado levantado del decimoquinto dgito (2741H).
- 107 5. EL INTRPRETE DE BASIC ROM La direccin ... 37A2H Esta rutina es usada durante la salida numrica para devolver lo inverso de la cuenta fraccionada de dgito en un operand flotante del punto. Esto es computado sustrayendo el exponente de la cuenta de dgito de operand (6 o 14). La direccin ... 37B4H Esta rutina es usada durante la salida numrica para hallar el ltimo dgito de poco cero del mantissa contenido en DAC. Su direccin es devuelta en par de registro HL. La direccin ... 37C8H Esta rutina es usada por el Evaluatodor Expression para exponentiate (^ ) dos operands de precisin del soltero. La primera parte en la que el operand es contenido registra a C, B, E, D y el segundo en DAC, el resultado es devuelto en DAC. El primer operand es copiado para ARG (3280H), empujado encima de la pila (2CC7H) e intercambiado con DAC (2C6FH). El segundo operand es entonces al que se hizo estallar en ARG y el control cae en la rutina doble de exponentiacin de precisin.
La direccin ... 37D7H Esta rutina es usada por el Evaluatodor Expression para exponentiate (^ ) dos operands de precisin del doble. El primer operand es contenido en DAC y el segundo en ARG, el resultado es devuelto en DAC. El resultado es usualmente computado utilizador: X^P=EXP (P*LOG (X)) Una alternativa, mucho ayunador, mtodo es posible si el operand de poder es un entero. Esto es probado para extrayendo la parte de entero del operand y asemejndose para la igualdad con el valor original (391AH). Un resultado positivo para esta prueba quiere decir que el mtodo ms rpido puede ser usado, ste es descrito ms abajo. La direccin ... 383FH Esta rutina es usada por el Evaluatodor Expression para exponentiate (^ ) dos operands de entero. La primera parte que el operand es contenido en par de registro Delaware y el segundo en par de registro HL, el resultado es devuelto en DAC. La rutina funciona estudiando en sus partes el problema en multiplicaciones simples: 6^13=6^1101 = (6^8) * (6^4) * (6^1) Como el operand de poder est de formalidad binaria un cambio correcto simple es determinar si un producto intermedio particular necesita ser incluido en el resultado. Los productos intermedios mismos son obtenidos por la multiplicacin acumulativa del operand cada vez que el lazo de computacin es atravesado. Si - 108 5. EL INTRPRETE DE BASIC ROM El producto se derrama en a cualquier hora que se convierte para singularizar precisin. En la terminacin el operand de poder es comprobado, si es negativo que el producto sea reciprocado como X ^ - P = 1/X ^ P. La direccin ... 390DH Esta rutina es usada durante la exponentiacin para multiplicar dos enteros (3193H), devuelve a Flag NZ si el resultado se ha derramado singularizar precisin. La direccin ... 391AH Esta rutina es usada durante la exponentiacin para comprobar si un operand doble de poder de precisin consta slo de una parte de entero, si as es que devuelve Flag Carolina Del Norte. La direccin ... 392EH Esta mesa de direcciones es usada por el Interpreter Runloop para encontrar al manipulador para una seal de declaracin. Aunque no divida de la mesa las palabras claves asociadas son incluidas debajo: PARA STMT PARA STMT PARA STMT El CRCULO del 5B11H de Lingsticas Computacionales del 00C3H de FIN del 63EAH
El 4524H PARA COLOR del 7980H de ANCHURA del 51C9H El 485DH del 6527H NEXT SI NO el EMPATE del 5D6EH La PINTURA de DATOS del 485BH 6438H TRON 59C5H La ENTRADA del 4B6CH el PIP 6439H TROFF 00C0H El 5E9FH el JUEGO del 73E5H de TRUEQUE del 643EH DIM El 4B9FH LEY 6477H ERASE 57EAH PSET El 4880H DEJ el 57E5H de ERROR del 49AAH PRESET 47E8H SONIDO del 73CAH del CURRICULUM VITAE GOTO 495DH El 53E2H de CARRERA del 479EH la PANTALLA del 79CCH DELETE El AUTOMVIL del 49B5H de DECLARACIN IF del 49E5H 7BE2H VPOKE El 63C9H RESTAURA 5468H BLOQUE DE OBJETOS MOVIBLES RENUM 7A48H 47B2H GOSUB 4718H DEFSTR 7B37H VDP El REGRESO del 4821H la BASE 471BH DEFINT 7B5AH 485DH LLAMADA REM 471EH DEFSNG 55A8H El ALTO del 63E3H el TIEMPO 4721H DEFDBL 7911H La LLAVE del 786CH de la LNEA del 4B0EH de la IMPRESIN del 4A24H El 7E4BH de CLARO del 6AB7H de CLARO del 64AFH MAX El MOTOR del 73B7H del CAMPO del 7C52H de la LISTA del 522EH El 775BH del 6286H NEW GET 6EC6H BLOAD El 48E4H EN 7758H PUSO a 6E92H BSAVE El ESPACIO CERRADO del 6C14H de ESPERA del 401CH 7C16H DSKO$ El 7C1BH de CARGA 501DH DEF 6B5DH SE SEDIMENT El 6B5EH del PINCHAZO del 5423H el NOMBRE del 7C20H MERGE 6424H CONT 6C2FH ARCHIVA PRESA del 7C25H 6FB7H CSAVE 7C48H LSET 7C2AH IPL 703FH COPIA CLOAD 7C4DH RSET 7C2FH El 4016H FUERA DE 6BA3H SALVO 7C34H CMD 4A1DH LPRINT 6C2AH LFILES 7766H LOCATE 5229H LLIST
- 109 5. EL INTRPRETE DE BASIC ROM La direccin ... 39DEH Esta mesa de direcciones es usada por el Evaluatodor Factor para encontrar al manipulador para una seal de funcin. Aunque no divida de la mesa las palabras claves asociadas son incluidos con las direcciones exteriorizado debajo: PARA FUNCIONAR FUNCIONAR FUNCIONAR El APURO del 30BEH DE PUNTO DE VENTA 6861H LEFT$ 4FCCH 6891H RIGHT$ 67FFH VARA LEN 7940H La TRIGONOMETRA 689AH MID$ 6604H TR$ 794CH 2E97H SGN 68BBH VAL 795AH PDL 30CFH ALMOHADILLA INT 680BH ASC 7969H El SISTEMA DE FRENOS ABS del 2E82H 681BH CHR$ 7C39H DSKF El ATISBO 2AFFH SQR 541CH 6D39H FPOS 2BDFH RND 7BF5H VPEEK 7C66H CVI El PECADO del 29ACH 6848H SPACE$ 7C6BH CVS El LEO del 2A72H 7C70H OCT$ 7C70H CVD 2B4AH EXP 65FAH HEX$ 6D25H EOF 2993H Colorado 4FC7H LPOS 6D03H LOC
El BRONCEADO del 29FBH 6FFFH N$ 6D14H LOF 2A14H ATN 2F8AH CINT 7C57H MKI$ 69F2H FRE 2FB2H CSNG 7C5CH MKS$ 4001H INP 303AH CDBL 7C61H MKD$ La direccin ... 3A3EH Esta mesa de direcciones es usada durante la tokenizacin de programa como un ndice en la mesa de palabra clave de BASIC (3A72H). Cada uno de las veintiseis entradas definen la direccin de puesta en marcha de uno de los subbloques de palabra clave. La primera entrada apunta hacia las palabras claves a partir de la carta "A", el segundo para esos a partir de la carta "B" etctera. 3A72H ... UN 3B9FH ... J 3C8EH ... S 3A88H ... B 3BA0H ... K 3CDBH ... T 3A9FH ... C 3BA8H ... L 3CF6H ... U 3AF3H ... D 3BE8H ... M 3CFFH ... V 3B2EH ... E 3C09H ... N 3D16H ... W 3B4FH ... F 3C18H ... O 3D20H ... X 3B69H ... G 3C2BH ... P 3D24H ... Y 3B7BH ... H 3C5DH ... Q 3D25H ... Z 3B80H ... yo 3C5EH ... interrogacin La direccin ... 3A72H Esta mesa contiene las palabras claves de BASIC y seales. Cada uno de los veintiseis bloques dentro de la mesa contienen todas las palabras claves a partir de una carta particular, es terminado con un byte de cero. Cada palabra clave es almacenada en el texto puro con el set 7 mordido para demarcar el ltimo carcter, sta es seguida inmediatamente por la seal asociada. El primer carcter de la palabra clave no necesita ser almacenado como esto es insinuado por su colocacin en lo - 110 5. EL INTRPRETE DE BASIC ROM Posponga ' Las palabras claves y las seales estn listadas debajo de en su totalidad, notan que la" J "," Q "," Y "y" Z " los bloques estn vacos: La LISTA del AUTOMVIL A9H DSKF 26H 93H REM 8FH Y el CURRICULUM VITAE de EMPATE F6H BEH LFILES BBH A7H El 06H del SISTEMA DE FRENOS ABS SI NO LEO A1H 0AH RSET B9H El FIN ATN 0EH 81H LOC 2CH RIGHT$ 02H ASC 15H ERASE A5H LEN 12H RND 08H El ERROR ATTR$ E9H A6H LEFT$ 01H RENUM AAH BASE PANTALLA C9H ERL E1H LOF 2DH C5H El MOTOR BSAVE D0H ERR E2H CEH SPRITE C7H El 90H de ALTO BLOAD CFH EXP 0BH MERGE B6H PIP C0H EOF 2BH FBH SWAP A LA LTIMA A4H N$ 1DH EQV F9H MKI$ 2EH COLOC a D2H La LLAMADA CAH FOR 82H MKS$ 2FH SALVO El CAMPO CERCANO B4H B1H MKD$ 30H SPC (DFH COPIA D6H ARCHIVA a B7H MID$ 03H STEP DCH CONT 99H FN DEH TOPA CDH SGN 04H
DESCONGESTIONE a 92H FRE 0FH NEXT 83H SQR 07H El 09H de PECADO de NOMBRE del 21H de APURO CLOAD 9BH D3H CSAVE 9AH FPOS 27H NEW 94H STR$ 13H CSRLIN E8H GOTO 89H NO E0H STRING$ E3H El EMPUJE CINT 1EH PARA CLARO del 89H B0H SPACE$ 19H CSNG 1FH GOSUB 8DH FUERA DEl SONIDO del 9CH C4H CDBL 20H GET B2H EN 22H de la VARA del 95H CVI 28H HEX$ 1BH Oregon F7H STRIG 23H La ENTRADA CVS 29H 85H OCT$ 1AH THEN DAH El 8BH de DECLARACIN IF CVD 2AH FUERA DE EBH TRON A2H La IMPRESIN de Colorados 0CH INSTR E5H 91H TROFF A3H CHR$ 16H INT 05H PUSO ETIQUETA B3H (DBH El 98H del PINCHAZO del CRCULO BCH INP 10H PARA D9H El 11H del DIABLILLO de COLOR BDH FAH POS TIME CBH El 0DH de BRONCEADO del 17H de Lingsticas Computacionales 9FH INKEY$ ECH PEEK CMD D7H IPL D5H PSET C2H USANDO a E4H SUPRIMA PRESA A8H D4H PRESET C3H USR DDH El PUNTO de la LLAVE del 84H de DATOS CCH EDH VAL 14H OSCUREZCA PINTURA 86H LPRINT 9DH BFH VARPTR E7H DEFSTR ABH LLIST 9EH PDL 24H VDP C8H La ALMOHADILLA DEFINT ACH LPOS 1CH 25H VPOKE C6H El JUEGO del 88H DEFSNG ADH LET C1H VPEEK 18H La ANCHURA del 8EH de REGRESO DEFDBL AEH LOCATE D8H A0H DSKO$ D1H REVISTA 96H de ESPERA del 87H AFH READ La CARRERA de CARGA DEF 97H B5H 8AH XOR F8H DSKI$ EAH LSET B8H RESTITUYE 8CH La direccin ... 3D26H Este veintiuno byte la mesa es usado por el Interpreter durante la tokenizacin de programa. Contiene las diez solas palabras claves de carcter y sus seales: + ... F1H * ... F3H ^ ... F5H ' ... E6H = ... EFH - ... F2H / ... F4H \ ... FCH > ... EEH < ... F0H - 111 5. EL INTRPRETE DE BASIC ROM La direccin ... 3D3BH Esta mesa es usada por el Evaluatodor Expression para determinar el nivel de precedencia para un operador dado del infix, mientras ms alto el valor de la mesa mayor la precedencia del operador. No incluido es las precedencias para los operadores del relational (64H), el "no" operador (5AH) y el operador de negacin (7DH), estos estn definidos directamente por el Expression y Evaluatordores Factor. 79H ... + 46H ... Oregon 79H ... - 3CH ... XOR 7CH ... * 32H ... EQV 7CH ... / 28H ... DIABLILLO 7FH ... ^ 7AH ... MOD 50H ... Y 7BH \
La direccin ... 3D47H Esta mesa se usa para convertir al resultado de un usuario la funcin definida al mismo tipo como el Variable usado en la definicin de funcin. Contiene las direcciones de las rutinas de conversin de tipo: 303AH ... CDBL 0000H ... No usado 2F8AH ... CINT 3058H ... Check coloquen en serie tipo 2FB2H ... CSNG La direccin ... 3D51H Esta mesa de direcciones es usada por el Evaluatodor Expression para encontrar al manipulador para un operador particular de matemticas del infix cuando ambos operands son precisin del doble: 269AH 268CH ... 27E6H 289FH ... / 37D7H 2F83H ... Relation La direccin ... 3D5DH Esta mesa de direcciones es usada por el Evaluatodor Expression para encontrar al manipulador para un operador particular de matemticas del infix cuando ambos operands son precisin del soltero: 324EH 3257H ... 325CH 3267H ... / 37C8H 2F21H ... Relation - 112 5. EL INTRPRETE DE BASIC ROM La direccin ... 3D69H Esta mesa de direcciones es usada por el Evaluatodor Expression para encontrar al manipulador para un operador particular de matemticas del infix cuando ambos operands son entero: 3172H 3167H ... 3193H 4DB8H ... / 383FH 2F4DH ... Relation
La direccin ... 3D75H Esta mesa contiene los mensajes de error Interpreter, cada uno se guarda en el texto puro con un exterminador de byte de cero. Los cdigos asociados de error son exteriorizados debajo para la referencia slo, no forman en parte de la mesa: 01 DESPUS fuera PARA 19 Device yo el error de la / O 02 el error Syntax 20 el error Verify 03 DEVUELVEN SIN GOSUB 21 CURRICULUM VITAE NINGN 04 Fuera De los DATOS 22 REANUDAN sin error 05 la llamada Ilegal de funcin 23 el error Impublicable 06 Se Derraman 24 Perdiendo operand 07 Fuera De la memoria 25 Line amortiguador se derraman 08 la lnea Indefinida nmero 50 el excedente del CAMPO 09 Escrito Debajo De Una Letra fuera de alcance 51 el error Interno 10 el conjunto imponente Redimensioned 52 el Mal nmero del archivo 11 Division de por ah ponen en el cero 53 Archivo no encontrado 12 Ilegal dirigen 54 File ya claro 13 Escriben A Mquina bodorrio 55 fin pasado Input 14 Fuera De espacio de la cuerda 56 Bad archivan nombre 15 Ensartan demasiado tiempo 57 Directo declaracin en archivo 16 Colocan En Serie frmula Sequential demasiado 58 complicado yo / la O slo 17 No Pueden Mantener 59 File cerrado 18 el usuario Indefinido funcionan La direccin ... 3FD2H ste es el mensaje de texto puro "adentro" terminado por un byte de cero. La direccin ... 3FD7H ste es el mensaje de texto puro "Oklahoma", RETORNO DE CARRO, LF ultimado por un byte de cero. La direccin ... 3FDCH ste es el mensaje de texto puro "que Break" termin por un byte de cero. - 113 5. EL INTRPRETE DE BASIC ROM
La direccin ... 3FE2H Esta rutina registra la pila Z80 para el "FOR" bloque de parmetro del lazo cuyo lazo la direccin Variable es suministrada en par de registro Delaware. La bsqueda es iniciada cuatro bytes por encima del Z80 actual SP para tener en cuenta la direccin del remitente de la persona que llama y la direccin del remitente Runloop. Si ningn "FOR" seal (82H) existe, entonces la rutina ultima a Flag NZ, si uno es encontrado que la direccin del lazo Variable es tomada del bloque de parmetro e inspeccionada. La rutina termina Z Flag en un encuentro exitoso con par de registro HL apuntando hacia el byte de tipo del bloque de parmetro. De otra manera los movimientos de bsqueda arriba de veintidos bytes para el principio del siguiente parmetro se bloquean.
La direccin ... 4001H Esta rutina es usada por el Evaluatodor Factor para ejercer al "INP" funcin para un operand contenido en DAC. El nmero de babor es comprobado (5439H), el puerto ley y el resultado coloc en DAC como un entero (4FCFH). La direccin ... 400BH Esta primera parte de rutina evala un operand en el rango - 32768 para + 65535 (542FH) y los lugares l en par de registro BC. Despus de revisar en busca de una coma, por la rutina del estndar SYNCHR, eso evala un segundo operand en el rango 0 para 255 (521CH) y coloca esto en A de registro. La direccin ... 4016H ste es el manipulador "apagado" de declaracin. El nmero de babor y byte de a datos les es evaluado (400BH) y el byte de datos para el puerto pertinente Z80. La direccin ... 401CH ste es la "espera" manipulador de declaracin. El nmero de babor y "AND" operands son primero evaluado (400BH) seguido por el "XOR" optativo operand (521CH). El puerto es entonces repetidamente ledos y los operands aplicados, XOR luego Y, hasta que un resultado de poco cero es obtenido. En contra de la informacin dado en algunos manuales MSX el lazo puede estar quebrado por la llave CTRL-STOP como la rutina del estndar CKCNTC sea llamada dentro de l. La direccin ... 4039H Esta rutina es usada por el Runloop cuando encuentra el fin del texto de programa mientras en el modo de programa. ONEFLAG es al que se dio jaque para ver si eso todava contiene un cdigo activo de error. Si as es que un "ningn CURRICULUM VITAE" error es generado, entonces el programa diferente la terminacin contina normalmente (6401H). La idea detrs de esta rutina es atrapar cualquier "en el ERROR" los manipuladores sin un "curriculum vitae" declaracin al final.
- 114 5. EL INTRPRETE DE BASIC ROM La direccin ... 404FH Esta rutina es usada por el manipulador "ledo" de declaracin cuando un error es encontrado en una "DATA" declaracin. La lnea que el nmero contuvo en DATLIN es copiada para CURLIN as es que el manipulador de error sealar con una bandera los "datos" lnea como la declaracin ilegal en vez de la lnea de programa. El control luego cae en el "error de sintaxis" generador. La direccin ... 4055H ste es un grupo de nueve generadores de error, la E de registro est cargada del cdigo pertinente de error y el control cae en el manipulador de error: ADDR. El ERROR
El error del 4055H Syntax El 4058H Division por el cero El 405BH DESPUS sin PARA El conjunto imponente 405EH Redimensioned La funcin del usuario del 4061H Undefined El CURRICULUM VITAE del 4064H sin error El error del 4067H Overflow El 406AH Perdiendo operand El bodorrio del 406DH Type La direccin ... 406F ste es el manipulador de error Interpreter, todos los generadores de error transferencia para aqu con un cdigo de error en E de registro. VLZADR es primero a cuadros para ver si el "VAL" manipulador de declaracin ha cambiado el texto de programa, si as es que el carcter original est recuperado de VLZDAT. El nmero actual de la lnea es entonces copiado de CURLIN para ERRLIN y PUNTEE y la pila Z80 est recuperada de SAVSTK (62F0H). El cdigo de error es colocado en ERRFLG, para el uso por el "ERR" funcin, y el programa actual que la colocacin del texto copi de SAVTXT a ERRTXT para el uso por el "curriculum vitae" manipulador de declaracin. El nmero de la lnea de error y colocacin del texto de programa son tambin copiados para OLDLIN y OLDTXT para el uso por el "CONT" manipulador de declaracin. ONELIN es entonces a cuadros para ver si uno previo "en el ERROR" la declaracin ha sido ajusticiado. Si es as, y con tal que ningn cdigo de error es ya activo, las transferencias de control para el Runloop (4620H) para ejecutar las declaraciones de recuperacin de ERROR BSICO. De otra manera el cdigo de error se usa para contar a travs de la mesa de mensaje de error en 3D75H hasta que lo requerido es alcanzado. Un RETORNO DE CARRO, LF es expedido (7323H) y la pantalla contenida para el modo del texto por la rutina del estndar TOTEXT. Un cdigo de la CAMPANA es entonces expedido y el error que el mensaje exterioriz (6678H). Asumir al Interpreter est adentro modo de programa, ms bien que el modo directo, esto sea seguido por la lnea numere (340AH) y controle cadas en el punto "muy bueno".
La direccin ... 411FH ste es el punto de reentrada para el Interpreter Mainloop para un programa que termina. La pantalla se ve forzada al modo del texto por la rutina del estndar TOTEXT, la impresora es despejado (7304H) y yo amortiguador de la / O 0 cerrado (6D7BH). Un RETORNO DE CARRO, LF es entonces expedido para la pantalla (7323H), el mensaje "Oklahoma" es exhibido (6678H) y control cae en el Mainloop. La direccin ... 4134H ste es el Interpreter Mainloop. CURLIN est primero listo a FFFFH para indicar modo directo y AUTFLG al que se dio jaque ver si "el AUTOMVIL" el modo est encendido. Si as es que el siguiente nmero de la lnea es tomado de AUTLIN y exhibido (3412H). El Program Text Area es entonces registrado para ver si esta lnea ya existe (4295H) y ya sea un asterisco o un espacio exhibido consecuentemente. La rutina del estndar ISFLIO se usa luego para determinar si una "carga" declaracin es
activa. Si as es que la lnea de programa es coleccionada del casete (7374H), entonces de otra manera es tomada de la consola por la rutina del estndar PINLIN. Si la lnea es vaca o la llave CTRL-STOP ha sido en apuros control se traslada de regreso al principio del Mainloop (4134H) sin ms accin. Si la lnea empieza con una lnea numere esto es convertido a un entero sin firmar en par de registro Delaware (4769H). La lnea es luego convertida a forma del tokenized y est posado en KBUF (42B2H). Si ningn nmero de la lnea fue encontrado al principio del control de la lnea entonces transferencias para el Runloop (6D48H) para ejecutar la declaracin. Asumir la lnea comienza con un nmero de la lnea que es probada para ver si es otrora vaca y el resultado por ahora salvado. El nmero de la lnea es copiado para PUNTEAR y AUTLIN aumentado por los contenidos de AUTINC, si AUTLIN ahora excede 65530 que el modo del "automvil" est apagado. El Program Text Area es entonces registrado (4295H) para encontrar un nmero que hace juego de la lnea o, a falta de esto, la colocacin del siguiente nmero ms alto de la lnea. Si ningn nmero que hace juego de la lnea es encontrado y la lnea es vaca y "el AUTOMVIL" el modo est apagado un "nmero indefinido de la lnea" error es generado (481CH). Si un nmero que hace juego de la lnea es encontrado y la lnea es vaca y "el AUTOMVIL" el modo est en el Mainloop simplemente saltos para la siguiente declaracin (4237H). Otrora cualquier punteros en el Program Text Area se convierten de regreso a revestir nmeros (54EAH) y cualquier lnea de programa existentes suprimidas (5405H). Asumir la lnea nueva de programa est poco vaco que el Program Text Area es abierto arriba por la cantidad requerida (6250H) y la lnea de programa del tokenized emulado de KBUF. Los vnculos Program Text Area son entonces calculados de nuevo (4257H), el Storage Variable Areas son descongestionadas (629AH) y controlan transferencias de regreso al principio del Mainloop.
- 116 5. EL INTRPRETE DE BASIC ROM La direccin ... 4253H Esta rutina calcula de nuevo los vnculos Program Text Area despus de una modificacin de programa. Los primeros dos bytes de cada lnea de programa contienen la direccin de puesta en marcha de la siguiente lnea, ste es llamado el enlace. Aunque los incrementos del enlace por los que la cantidad de almacenamiento tom programan lnea grandemente se achica el tiempo requerido por el Interpreter para localizar una lnea dada. Un ejemplo de una lnea tpica de programa es exteriorizado debajo, en este caso la lnea "10 ESTAMPADO 9" situados al principio del Program Text Area (8001H): + 09H 80H 0AH 00H 91H 20H 1AH 00H + Figura 43: El programa Line En el citado anteriormente ejemplo el enlace se guarda en la orden de palabra Z80 (LSB, MSB) y es inmediatamente seguido por el nmero binario de la lnea, tambin en la orden de palabra. La declaracin misma est compuesta de una seal "estampada" (91H), un solo
espacio, el nmero nueve y el fin de carcter de la lnea (00H). Los ms detalles del formato de almacenamiento pueden ser encontrados en la rutina del tokenizing (42B2H). Cada vnculo es calculado de nuevo simplemente escudriando a travs de la lnea hasta que el fin de carcter de la lnea es encontrado. El proceso es completo cuando el fin del Program Storage Area, demarcada por el enlace especial de 0000H, es cumplido. La direccin ... 4279H Esta rutina es usada por la "lista" manipulador de declaracin a coleccionar hasta dos operands de nmero de la lnea del texto de programa. Si el primer nmero de la lnea est presente, entonces es convertido a un entero sin firmar en par de registro Delaware (475FH), en caso de que no un valor predeterminado de 0000H es devuelto. Si el segundo nmero de la lnea est presente, entonces debe ser precedido por ah uno "-" la seal (F2H) y es devuelta en la pila Z80, en caso de que no un valor predeterminado de 65530 es devuelto. El control luego cae en la rutina de bsqueda del texto de programa para encontrar la primera lnea a la que se puso notas de programa. La direccin ... 4295H Esta rutina le registra al Program Text Area para la lnea de programa cuya lnea el nmero es suministrado en par de registro Delaware. Comenzar en la direccin contuvo en TXTTAB cada lnea de programa es examinada para un encuentro. Si un nmero igual de la lnea es encontrado, entonces la rutina termina con Flag Z, C y par de registro BC apuntando hacia el principio de la lnea de programa. Si un nmero ms alto de la lnea es encontrado, entonces la rutina ultima a Flag NZ, Carolina Del Norte y si el enlace de fin es alcanzado que la rutina ultima a Flag Z, Carolina Del Norte.
- 117 5. EL INTRPRETE DE BASIC ROM La direccin ... 42B2H Esta rutina es usada por el Interpreter Mainloop para tokenize una lnea de texto. En las proposiciones del par de registro de entrada HL para el primer carcter del texto en BUF. En salida la lnea del tokenized est en KBUF, el par de registro AC tiene aplicacin que su largo y registro arreglan en pares puntos HL para su principio. Excepte despus de que la abertura abra comillas o despus de las palabras claves "REM", de "llamada" o de "datos" cualquier cadena de caracteres haciendo juego con una palabra clave son reemplazados por la seal de esa palabra clave. Los alphabetics de la letra minscula se varan para la caja alta para la comparacin de palabra clave. El carcter "? Es reemplazado por la seal "estampada" (91H) y el carcter "por ah"" (3AH), "REM" seal (8FH), " la seal (E6H). La seal "distinta" (A1H) es precedida por un separador de declaracin (3AH). Cualquier otros personajes miscelneos en el texto son emulados sin alteracin excepto que los alphabetics de la letra minscula son convertidos a caja alta. Esas seales ms pequeo que 80H, las seales de funcin, no pueden guardarse directamente en KBUF como estarn en conflicto con texto ordinario. En lugar de eso la secuencia FFH, + 80H de la seal es usada. Las constantes numricas se convierten primero en uno de los tipos estndar en DAC (3299H). Se guardan luego en una de varias formas dependiendo de su tipo y la magnitud, la idea general siendo minimizar uso de memoria: 0BH LSB MSB................... El nmero Octal 0CH LSB MSB................... El nmero Hex
El 11H para 1AH.................... El Entero 0 Para 9 0FH LSB....................... El Entero 10 Para 255 1CH LSB MSB................... El Entero 256 Para 32767 El INGENIERO ELCTRICO del 1DH DD DD............... Singularice a Precision El INGENIERO ELCTRICO del 1FH DD DD DD DD DD DD ... Precision Doble No hay seal especfica para nmeros binarios, estos son dejados como cadenas de caracteres. ste parecera ser un legado de anteriores versiones de BASIC Microsoft. Cualquier indique a travs de seas prefijar un nmero es considerado como un operador y se guarda como una seal separada, los nmeros negativos no se producen durante la tokenizacin. Como los nmeros dobles de precisin ocupan tanto espacio una lnea conteniendo demasiados, para IMPRESIN de ejemplo 1 #, 1 #, 1 # etc . puede causar a KBUF para se llena. Si esto ocurre, entonces un "excedente del amortiguador de la lnea" error es generado. Cualquier numere despus de una de las seales de palabra clave en la mesa en 43B5H - se considera - es un operand de nmero de la lnea y se guarda con una seal diferente: 0DH LSB MSB................... El puntero 0EH LSB MSB................... El nmero de la lnea Durante la tokenizacin slo el tipo normal (0EH) es generado, cuando un programa realmente marcha estos operands de nmero de la lnea son convertidos al tipo del puntero de la direccin (0DH). - 118 5. EL INTRPRETE DE BASIC ROM La direccin ... 43B5H Esta mesa de seales es usada durante la tokenizacin para revisar en busca de las palabras claves que toman operands de nmero de la lnea. Las palabras claves mismas estn listadas debajo: RESTAURE HUYE La LISTA del AUTOMVIL RENUM LLIST SUPRIMA a GOTO El REGRESO del CURRICULUM VITAE ERL LUEGO SI NO GOSUB La direccin ... 4524H ste es el "FOR" manipulador de declaracin. El lazo Variable est primero ubicado y asignado su valor inicial por el manipulador "dejado" (4880H), la direccin del lazo Variable es devuelta en par de registro Delaware. El fin de la declaracin es encontrado (485BH) y su direccin colocada en ENDFOR. La pila Z80 es entonces registrada (3FE6H) para cualquier lazo de lo mismo que usa bloques de parmetro Variable. Pues cada uno encontr el ENDFOR actual que la direccin es comparada con eso del bloque de parmetro, si hay un encuentro que el captulo de la pila es descartado. Esto est hecho en el caso que hay cualquier lazos incompletos como resultado de un "GOTO" de regreso al "FOR" declaracin de adentro el lazo. El operand de terminacin y "paso" optativo operand son entonces evaluados y convertidos
para el mismo tipo como el lazo Variable. Despus de comprobar ese espacio de la pila est disponible (625EH) que un veinticinco parmetro de byte el bloque es empujado encima del Z80 pila. Esto est hecho de lo siguiente: 2 bytes ... la direccin ENDFOR 2 bytes ... el nmero de la lnea Current 8 bytes ... el valor de terminacin Loop 8 bytes ... el valor de PASO 1 byte ... el tipo Loop 1 direccin de byte ... de PASO 2 bytes ... Address de lazo Variable 1 byte ... PARA seal (82H) El parmetro que el bloque permanece en la pila para el uso por el "siguiente" manipulador de declaracin hasta la terminacin es cumplido, est luego descartado. El tamao del bloque permanece constante aun sin embargo, para el entero y la sola precisin arrolla a Variables, los bytes ocho llenos no son precisados para la terminacin y los valores de PASO. En estos casos los bytes menos significativos estn apiados fuera con basura. Debera ser notable que el tipo de operacin de aritmtica realizada por el "siguiente" manipulador de declaracin, y por lo tanto la ejecucin del lazo aceleran, depende enteramente del tipo del lazo Variable - 119 5. EL INTRPRETE DE BASIC ROM Y no el operand escribe a mquina. Para el tipo entero ejecucin programa ms rpido Variables, el % N por ejemplo, debera ser usado. La direccin ... 4601H ste es el Runloop, cada declaracin manipulador regresa aqu en la terminacin as es que el Interpreter puede proceder hacia la siguiente declaracin. El Z80 actual SP es emulado para SAVSTK para el error que la recuperacin tiene en mente y que la llave CTRL-STOP comprob por la rutina del estndar ISCNTC. Cualquier pendiente interrumpe es procesado (6389H) y la colocacin coetnea del texto de programa, est sujeto en par de registro HL a todo lo largo del Interpreter, es emulado para SAVTXT. El carcter coetneo de programa es entonces examinado, si sta es una declaracin que el control del separador (3AH) transfiere inmediatamente para el punto de ejecucin (4640H). Si es cualquier otra cosa sino que un fin de carcter de la lnea (00H) un "error de sintaxis" es generado (4055H), entonces como hay texto espurio al final de la declaracin. El par de registro HL es adelantado para el primer carcter de la lnea nueva de programa y el enlace examinado, si ste es cero el programa es terminado (4039H). De otra manera el nmero de la lnea es tomado de la lnea nueva y est posado en CURLIN. Si TRCFLG es poco cero el nmero de la lnea es exhibido (3412H) adjunto a la presente por parntesis angulares, el control luego cae en la ejecucin punto. La direccin ... 4640H ste es el punto de ejecucin Runloop. Una declaracin de impuestos para el principio del Runloop (4601H) es empujado encima de la pila Z80 y el primer carcter tomado de la declaracin nueva por la rutina del estndar CHRGTR. Si es, entonces un control de carcter del subrayado (5FH) se traslada para la "llamada" manipulador de declaracin (55A7H). Si es ms pequeo que 81H, entonces la seal menor de declaracin, transferencias de control para el
manipulador "dejado" (4880H). Si es mayor que D8H, entonces la seal ms grande de declaracin, es comprobado para ver si es una de la funcin que las seales permitieron como una declaracin (51ADH). De otra manera la direccin del manipulador es tomada de la mesa en 392EH y empujada encima de la pila. El control luego las cadas en la rutina del estndar CHRGTR para ir a traer el siguiente personaje de programa antes del control transfieren para el manipulador de declaracin. La direccin ... 4666H El nombre...... CHRGTR La entrada..... Las proposiciones HL para corriente programan carcter La salida...... Un = Siguiente carcter de programa Modifica.. AF, HL La rutina estndar para ir a traer al siguiente personaje del texto de programa. El par de registro HL es incrementado y el carcter colocado en A de registro. Si es un espacio, entonces el cdigo de la ETIQUETA (09H) o LF pone cdigo a (0AH) que es del que se salt por encima. Si es un separador de declaracin (3AH) o acabe de carcter de la lnea (00H), entonces la rutina ultima con Flag Z, Carolina Del Norte. Si es un dgito de "0" para "9" que la rutina termina con Flag NZ, entonces C. Si es cualquier otro carcter aparte - 120 5. EL INTRPRETE DE BASIC ROM
De las seales numricas de prefijo la rutina ultima a Flag NZ, Carolina Del Norte. Si el carcter es una de las seales numricas de prefijo luego es colocado en CONSAV y el operand copiado para CONLO. El cdigo de tipo es colocado en CONTYP y la direccin del carcter de programa de arrastre en CONTXT. La direccin ... 46E8H Esta rutina es usada por el Evaluatodor Factor y durante la detokenizacin para recobrar un operand numrico cundo una de las seales de prefijo son devueltas por la rutina del estndar CHRGTR. La seal de prefijo es primero tomada de CONSAV, si es todo menos una seal de la lnea de nmero o del puntero el operand es copiado de CONLO para DAC y el tipo que el cdigo emul de CONTYP para VALTYP. Si es una lnea nmero, entonces se convierte para singularizar precisin y colocado en DAC (3236H). Si es un puntero el nmero original de la lnea es recobrado del programa para el que se estableci referencias lnea, convertida para singularizar precisin y colocado en DAC (3236H). La direccin ... 4718H ste es el "DEFSTR" manipulador de declaracin. La E de registro est cargada del cdigo de tipo de la cuerda (03H) y las cadas de control en el general escriben a mquina rutina de definicin. La direccin ... 471BH ste es el "DEFINT" manipulador de declaracin. La E de registro est cargada del cdigo de tipo de entero (02H) y las cadas de control en el general escriben a mquina rutina de definicin. La direccin ... 471EH
ste es el "DEFSNG" manipulador de declaracin. La E de registro est cargada del solo cdigo de tipo de precisin (04H) y las cadas de control en el general escriben a mquina rutina de definicin. La direccin ... 4721H ste es el "DEFDBL" manipulador de declaracin. La E de registro est cargada del cdigo doble (08H) de tipo de precisin y el primer rango que el carcter de definicin comprob (64A7H). Si sta no es caja alta alfabtica un "error de sintaxis" es generada (4055H). Si uno "-" la seal (F2H) sigue, entonces el segundo carcter de definicin de rango es tomado y comprobado (64A7H), la diferencia entre lo dos determina el nmero de entradas en DEFTBL que se llena del cdigo de tipo. La direccin ... 4755H Esta rutina evala un operand y convierte ella para un entero en par de registro Delaware (520FH). Si el operand es negativo, entonces una "llamada ilegal de funcin" error es generada.
- 121 5. EL INTRPRETE DE BASIC ROM La direccin ... 475FH Esta rutina es usada por los manipuladores de declaracin mostrados en la mesa en 43B5H para coleccionar un solo operand de nmero de la lnea del texto de programa y convertir ella para un entero sin firmar en par de registro Delaware. Si el primer carcter en el texto es uno "" (2EH) la rutina termina con los contenidos de PUNTO. Si es una de las seales de nmero de la lnea (0DH o 0EH), entonces la rutina termina con los contenidos de CONLO. Los dgitos sucesivos diferentes son tomados y aadidos para el producto, con multiplicaciones apropiadas a las diez, hasta que un carcter poco numrico es encontrado. La direccin ... 479EH ste es el manipulador "andado" de declaracin. Si ningn operand de nmero de la lnea est presente en el texto de programa el sistema es aclarado (629AH) y los ingresos de control para el Runloop con registro paree a HL apuntando hacia el principio del Program Storage Area. Si un operand de nmero de la lnea est presente que el sistema es aclarado (62A1H) y controle transferencias para el "GOTO" manipulador de declaracin (47E7H). De otra manera un siguiente filename est asumido, para la CARRERA de ejemplo " CAS:ARCHIVE ", y controle transferencias para la" CARGA " el manipulador de declaracin (6B5BH); La direccin ... 47B2H ste es el "GOSUB" manipulador de declaracin. Despus de comprobar ese espacio de la pila est disponible (625EH) el operand de nmero de la lnea es coleccionado y colocado en par de registro Delaware (4769H). El bloque de parmetro de siete bytes es entonces empujado encima de la pila y control transfiere para el "GOTO" manipulador (47EBH). El bloque de parmetro est hecho de lo siguiente: 2 bytes ... End de direccin de declaracin 2 bytes ... el nmero de la lnea Current
2 bytes ... 0000H 1 byte ... la seal GOSUB (8DH) El parmetro que el bloque permanece en la pila hasta un "regreso" declaracin es ejecutado. Se usa luego para determinar la colocacin original del texto de programa despus de la cual est descartada. La direccin ... 47CFH Esta rutina es usada por el Runloop interrumpe procesador (6389H) para crear a un "GOSUB" bloque de parmetro de tipo en la pila Z80. Uno interrumpe bloque es idntico para un bloque normal excepto que los dos bytes de cero mostrado de arriba sean reemplazados por la direccin de entrada del dispositivo en TRPTBL. Esta direccin ser usada por el "regreso" manipulador de declaracin para actualizar el dispositivo interrumpe estado una vez que una subrutina ha terminado. Despus de empujar los boletos de transbordo de control del bloque de parmetro para el Runloop para ejecutar la lnea de programa a cuyo discurso estn suministrados en par de registro Delaware.
La direccin ... 47E8H ste es el "GOTO" manipulador de declaracin. El operand de nmero de la lnea es coleccionado (4769H) y colocado en par de registro HL. Si es, entonces un control del puntero se traslada inmediatamente para el Runloop para empezar ejecucin en la colocacin nueva del texto de programa. De otra manera el nmero de la lnea es comparado con el nmero actual de la lnea para determinar la colocacin de puesta en marcha para la bsqueda del texto de programa. Si es mayor, entonces los principios de bsqueda del fin de esta lnea (4298H), si eso fueran ms pequeos, entonces empiece desde el principio del Program Text Area (4295H). Si la lnea a la que se puso notas no puede ser encontrada, entonces un "nmero indefinido de la lnea" error es generado (481CH). De otra manera el operand de nmero de la lnea es reemplazado por la direccin de la lnea a la que se puso notas de programa y su seal se convirti en el tipo del puntero (5583H). El control luego se traslada para el Runloop para ejecutar el verso para el que se estableci referencias de programa. La direccin ... 481CH ste es el "nmero indefinido de la lnea" generador de error. La direccin ... 4821H ste es el "regreso" manipulador de declaracin. Una direccin falsa del lazo Variable es colocada en par de registro Delaware y la pila Z80 registrada (3FE2H) para encontrar el primer bloque de parmetro no formar parte de un "FOR" lazo, este captulo de pila est descartado. Si ningn "GOSUB" seal (8DH) es encontrado en este punto, entonces un "regreso sin GOSUB" error es generado. Los siguientes dos bytes son luego tomados del bloque, si son poco cero que el bloque fue generado por uno interrumpa y el "alto" temporal condicin est removido (633EH). El texto de programa es entonces examinado, si cualquier cosa sigue que el "regreso" seal mismo - se asume - es un operand de nmero de la lnea y control se traslada para el "GOTO" manipulador
(47E8H). De otra manera el viejo nmero de la lnea y direccin del texto de programa son tomados del bloque y controlan ingresos para el Runloop. La direccin ... 485BH ste es la "DATA" manipulador de declaracin. El texto de programa es saltado encima hasta que un separador de declaracin (3AH) o fin de carcter de la lnea (00H) es encontrado. Esta rutina es tambin el "REM" y "si no" la manipuladora de declaracin por el punto de entrada en 485DH, en este caso slo el fin de actos de carcter de la lnea como un exterminador. La direccin ... 4880H ste es el manipulador "dejado" de declaracin. El Variable est primero ubicado (5EA4H), su direccin invirti a TEMP y el operand evaluado (4C64H). Si es necesario el tipo de operand se vara luego a hacer juego con eso del Variable (517AH). Asumir el operand es uno de los tres tipos numricos que es simplemente copiado
De DAC para el Variable en la Variable Storage Area (2EF3H). Si el operand es una cuerda escriba a mquina, entonces la direccin del cuerpo de la cuerda es tomada del descriptor e inspeccionada. Si est en KBUF, entonces como sera el caso para una cuerda explcita en una declaracin directa, el cuerpo es primero copiado para el String Storage Area y un descriptor nuevo creado (6611H). El descriptor est entonces liberado de TEMPST (67EEH) y copiado para el Variable en el Storage Variable Area (2EF3H). La direccin ... 48E4H Esto es lo "en el ERROR", "en DEVICE GOSUB" y "en la EXPRESIN" el manipulador de declaracin. Si el siguiente carcter del texto de programa no es, entonces un "error" control de la seal (A6H) se traslada para lo "en DEVICE GOSUB" y "en la EXPRESIN" el manipulador (490DH). El texto de programa es comprobado para asegurar que una seal "GOTO" (89H) sigue y luego el operand de nmero de la lnea coleccionado (4769H). El texto de programa es registrado para obtener la direccin de la lnea a la que se puso notas (4293H) y esto es colocado en ONELIN. Si el operand de nmero de la lnea es poco cero la rutina luego termina. Si el operand de nmero de la lnea es, entonces el cero ONEFLG es comprobado para ver si una situacin de error ya existe (insinuar que la declaracin est dentro de una rutina de recuperacin de ERROR BSICO). Si as es que el control se traslada para el manipulador de error (4096H) para obtener a la fuerza un error inmediato, entonces de otra manera la rutina termina normalmente. La direccin ... 490DH Esto es lo "en DEVICE GOSUB" y "en la EXPRESIN" el manipulador de declaracin. Si el siguiente carcter del texto de programa no es, entonces un control de la seal del dispositivo (7810H) se traslada para lo "en la EXPRESIN" el manipulador (4943H). Despus de comprobar el texto de programa para un "GOSUB" seal (8DH) cada uno del nmero de la lnea que los operands requirieron para un dispositivo particular es coleccionado a su vez (4769H). Asumir un operand dado de nmero de la lnea es poco cero el texto de programa es registrado para encontrar la direccin de la lnea a la que se puso notas (4293H) y esto es colocado en la entrada del dispositivo en TRPTBL (785CH). La rutina termina cuando ninguno de los ms operands de nmero de la lnea son encontrados.
La direccin ... 4943H Esto es lo "en la EXPRESIN" el manipulador de declaracin. El operand es evaluado (521CH) y la siguiente seal (89H) "GOSUB" de la seal (8DH) o "GOTO" colocado en A de registro. El operand se usa luego para contar a lo largo del texto de programa hasta que las proposiciones del par de registro HL para la lnea requerida numeran operand. El control luego se traslada de regreso al punto de ejecucin Runloop (4646H) para descifrar al "GOSUB" o "GOTO" seal. La direccin ... 495DH ste es el "curriculum vitae" manipulador de declaracin. ONEFLG es primero a cuadros para hacer seguro que una condicin de error ya existe, en caso de que no un "curriculum vitae sin error" es generado (4064H). Si un non
El operand de nmero de la lnea de cero sigue transferencias de control para el "GOTO" manipulador (47EBH). Si una "siguiente" seal (83H) sigue, entonces la colocacin del error est recuperada de ERRTXT y ERRLIN, el principio de la siguiente declaracin es encontrado (485BH) y la rutina termina. Si no hay operand de nmero de la lnea o si es ponga en el cero, entonces la colocacin del error es encontrada de ERRTXT y ERRLIN y la rutina termina. La direccin ... 49AAH ste es el "error" manipulador de declaracin. El operand es evaluado y colocado en registro E (521CH). Si es ponga en el cero una "llamada ilegal de funcin" error es generada (475AH), entonces el control diferente se traslada para el manipulador de error (406FH). La direccin ... 49B5H ste es el "automvil" manipulador de Declaracin. El principio optativo y lnea de incremento numeran a operands, ambos con un valor predeterminado de diez, son coleccionados (475FH) y colocados en AUTLIN y el poco cero de la hechura AUTINC. After AUTFLG el Runloop regreso se destruye y el control se traslada directamente para el Mainloop (4134H). La direccin ... 49E5H ste es la "declaracin IF" manipulador de declaracin. El operand es evaluado (4C64H) y, despus de inspeccionar para un "GOTO" seal (89H) o "luego" una seal (DAH), su signo es probado (2EA1H). Si el operand es poco ponga en el cero (verdadero) el siguiente texto es ejecutado ya sea por una transferencia inmediata para el Runloop (4646H) o, para un nmero de la lnea operand, el "GOTO" manipulador (47E8H). Si el operand es ponga en el cero (falso), entonces el texto de declaracin es escudriado (485BH) hasta que una seal "distinta" (A1H) no sea encontrada simtrica por una "declaracin IF" seal (8BH) y la ejecucin recomienza. La direccin ... 4A1DH ste es el "LPRINT" manipulador de declaracin. PRTFLG est listo para 01H, a dirigir salida para la impresora, y controlar transfiere para el manipulador "estampado" (4A29H). La direccin ... 4A24H
ste es el manipulador "estampado" de declaracin. El texto de programa es primero a cuadros para un nmero del amortiguador de arrastre y, si PTRFIL necesario, se dispuso a dirigir salida para lo requerido yo / la O el amortiguador (6D57H). Si ningn ms texto de programa existe, entonces un RETORNO DE CARRO, LF es expedido (7328H) y la rutina termina (4AFFH). Los personajes sucesivos diferentes son tomados del texto de programa y analizados. Si una seal "utilizadora" (E4H) es encontrada que control se traslada para el manipulador (60B1H) "que USA IMPRESIN". Si Uno "" El carcter es encontrado que control justamente se traslada de regreso al principio para ir a traer el siguiente artculo (4A2EH). Si una coma es encontrada, entonces suficientes espacios son expedidos para traer la colocacin estampada coetnea, de TTYPOS, LPTPOS o uno yo el amortiguador de la / O
FCB, para un mltiplo integral de catorce. Si la salida es dirigida para la pantalla y la colocacin estampada es iguales para o ms gran que los contenidos de CLMLST o si la salida es dirigida para la impresora y eso es iguales para o ms gran que 238 luego un RETORNO DE CARRO, entonces LF es expedido en lugar de eso (7328H). Si un "SPC (" la seal (DFH) es encontrado, entonces el operand es evaluado (521BH) y el nmero requerido de espacios es salida. Si una "etiqueta (" la seal (DBH) es encontrada, entonces el operand es evaluado (521BH) y suficientes espacios expedidos para traer la impresin de corriente sitan, de TTYPOS, LPTPOS o uno yo amortiguador de la / O FCB, para el punto requerido. Si ninguno de estos personajes son encontrados que el texto de programa contiene unos datos tem cul es luego evaluado (4C64H). Si el operand es una cuerda, entonces es simplemente exhibida (667BH). Si es numrico, entonces sea primero convertido a texto en FBUFFR (3425H) y una cuerda que el descriptor cre (6635H). Si la salida es dirigida uno yo el amortiguador de la / O la cuerda resultante es entonces exhibida (667BH). Si la salida es dirigida para la pantalla o la impresora la colocacin estampada coetnea, entonces de TTYPOS o LPTPOS, es comparado con el largo de la lnea y un RETORNO DE CARRO, LF expedido (7328H) si la salida no se probar la lnea. El largo mximo de la lnea es 255 para la impresora y es tomado de LINLEN para la pantalla. Una vez que la cuerda ha sido exteriorizado control se traslada de regreso al principio del manipulador. La direccin ... 4AFFH Esta rutina pone en el cero a PRTFLG y PTRFIL para devolver a la salida de Interpreter a la pantalla. La direccin ... 4B0EH sta es la "entrada de la LNEA de ENTRADA", de la "lnea" y "lnea" manipulador de declaracin. Si los siguientes programan carcter del texto, entonces es, entonces cualquier cosa aparte de una "entrada" control de la seal (85H) se traslada para la "lnea" manipulador de declaracin (58A7H). Si los siguientes programan carcter del texto es, entonces unas (23H) transferencias de control para la "lnea INTRODUCEN EN LA COMPUTADORA" manipulador de declaracin (6D8FH). Cualquier siguiente cuerda presta es evaluada y exhibida (4B7BH) y el Variable localizado (5EA4H) e inspeccionada para asegurar que es un tipo de la cuerda (3058H). La lnea de texto es coleccionada de la consola por la rutina del estndar INLIN, si Flag C (CTRL-STOP) es control devuelto se traslada para el "alto" manipulador de declaracin (63FEH). De otra manera la cuerda de entrada es analizada y un descriptor creado (6638H), un control luego se traslada para el manipulador "dejado" de declaracin para la asignacin (4892H). Debera ser notable que la
pantalla no se ve forzada al modo del texto antes de que la entrada sea coleccionada. La direccin ... 4B3AH ste es el mensaje de texto puro "?Rehaga de principio ", el RETORNO DE CARRO, LF ultimado por un byte de cero.
La direccin ... 4B4DH Esta rutina es usada por la "lectura /entrada" declaracin manipulador si no ha podido convertir un artculo de datos a forma numrica. Si en el modo "ledo" (FLGINP es poco cero) un "error de sintaxis" es generado (404FH). De otra manera el mensaje "?Rehaga de principio " es exhibido (6678H) y el control regresa al manipulador de declaracin. La direccin ... 4B62H ste es la "entrada" manipulador de Declaracin. El nmero del amortiguador es evaluado y PTRFIL se dispuso a dirigir entrada de lo requerido yo amortiguador de la / O (6D55H), el control luego se traslada para la "lectura /entrada" combinada manipulador de declaracin (4B9BH). La direccin ... 4B6CH ste es la "entrada" manipulador de declaracin. Si el siguiente carcter del texto de programa es, entonces un control se traslada para la "entrada" manipulador de declaracin (4B62H). De otra manera la pantalla se ve forzada al modo del texto, por la rutina del estndar TOTXT, y cualquier indicador que la cuerda analiz (6636H) y exterioriz (667BH). Un signo de interrogacin es entonces exhibido y una lnea de texto cobrado de la consola por la rutina del estndar QINLIN. Si esto devuelve transferencias de control Flag C (CTRL-STOP) para el "alto" manipulador (63FEH). Si el primer carcter en BUF es ponga en el cero (la entrada nula), entonces el manipulador termina saltndose hasta el fin de la declaracin (485AH), el control diferente cae en la "lectura /entrada" combinada manipulador. La direccin ... 4B9FH ste es el manipulador "ledo" de declaracin, un captulo grande es tambin usado por la "entrada" y "la ENTRADA" declaraciones as es que la estructura es bastante embarazosa. Cada Variable encontr en el texto de programa est ubicado a su vez (5EA4H), para cada uno el artculo correspondiente de datos es obtenido y asignado para el Variable por el manipulador "dejado" (4893H). Cuando en el modo "ledo" los artculos de datos son tomados del texto de programa usando los contenidos iniciales de DATPTR (4C40H). Cuando en "la ENTRADA" o "introduzca en la computadora" modo que los artculos de datos son tomados del amortiguador del texto BUF. Si los artculos de datos estn agotados en el modo "ledo" uno "por los DATOS" el error es generado. Si estn exhaustos adentro "introduzca en la computadora", entonces el modo dos la pregunta marca es exteriorizado y otra lnea ida a traer de la consola por la rutina del estndar QINLIN. Si estn exhaustos adentro "introduzca en la computadora" modo que otra lnea de texto es copiada para BUF de lo pertinente yo / O amortiguador (6D83H). Si el Variable que la lista es el rato agotado en "la ENTRADA" el modo el mensaje "que la Extra ignor" es exteriorizado (6678H) y el manipulador termina (4AFFH). En "la ENTRADA" el modo que ningn mensaje est
el rato exteriorizado en el control "ledo" de modo lo termina por DATPTR modernizante (63DEH). Si un artculo de datos no puede ser convertido a, entonces la forma numrica (3299H) para hacer juego con un control numrico Variable se traslada para lo "?Rehaga de principio " la rutina (4B4DH).
- 127 5. EL INTRPRETE DE BASIC ROM La direccin ... 4C2FH Lo es el mensaje de texto puro "?La extra ignorada ", el RETORNO DE CARRO, LF ultimado por un byte de cero. La direccin ... 4C40H Esta rutina es usada por el manipulador "ledo" para localizar los siguientes "datos" declaracin en el texto de programa, la direccin de la que echar a andar es suministrada en par de registro HL. Cada declaracin de programa es examinada hasta que una "DATA" seal (84H) es encontrada despus de lo cual la rutina termina (4BD1H). Si el enlace de fin es alcanzado uno "por DATA" error es generado. Como los ingresos de bsqueda el nmero de la lnea de cada lnea de programa es colocado en DATLIN para el uso por el manipulador de error. La direccin ... 4C5FH Esta rutina inspecciona que el siguiente carcter en el texto de programa es la seal (EFH) y luego cae en el Evaluatodor Expression. Estando entrado en 4C62H inspecciona para "(". La direccin ... 4C64H ste es el Evaluatodor Expression. En las proposiciones del par de registro de entrada HL para el primer carcter de la expresin a ser evaluado. En par de la registro de la salida HL apunta hacia el carcter siguiendo la expresin, el resultado est en DAC y el cdigo de tipo en VALTYP. Para un resultado de la cuerda la direccin del descriptor de la cuerda es devuelta en DAC + 2. El descriptor mismo comprendiendo un solo byte para el largo de la cuerda y dos bytes para su direccin, ser en TEMPST o dentro de una cuerda Variable. Una expresin es una lista de factores (4DC7H) acoplados por operadores con niveles discrepantes de precedencia. Para procesar tal expresin correctamente el Evaluatodor Expression debe poder por ahora apilar un resultado intermedio, si el siguiente operador tiene una precedencia superior que el operador actual, y vuelva a empezar en un clculo nuevo. Por consiguiente tiene dos operaciones bsicas, la PILA y TENGA APLICACIN. Por ejemplo: 3+250\2^2*3^3+1 La PILA: 3 + (\ sigue) La PILA: 250 \ (sigue) TENGA APLICACIN: La PILA: 4 * (sigue) TENGA APLICACIN: TENGA APLICACIN: TENGA APLICACIN: TENGA APLICACIN: TENGA APLICACIN:
2^2=4 (* sigue) 3^3=27 (+ sigue) 4*27=108 (+ sigue) 250\108=2 (+ sigue) 3+2=5 (+ sigue) 5+1=6 (, sigue)
La evaluacin termina cuando el siguiente operador tiene una precedencia - 128 5. EL INTRPRETE DE BASIC ROM El igual para o ms abajo de la precedencia inicial y la pila est vaco. El delimitador de expresin, mostrado como una coma en el ejemplo, es considerado como tener una precedencia de cero y as tambin siempre detendr evaluacin. Normalmente el Expression Evaluatodor se pone en marcha con una precedencia inicial de cero pero el punto de entrada en 4C67H puede usarse para suministrar un valor alternativo en D de registro. Esta facilidad es usada por el Evaluatodor Factor para restringir el rango de evaluacin al aplicar la negacin mondica y "no" los operadores. La direccin ... 4D22H Esta rutina es usada por el Evaluatodor Expression para aplicar un operador de matemticas del infix (+ - * / ) para un par de operands numricos. Hay rutinas separadas para los operadores del relational (4F57H) y los operadores lgicos (4F78H). El primer operand, su cdigo de tipo, y la seal del a operador les es suministrado en la pila Z80, el segundo operand y su cdigo de tipo son suministrados en DAC y VALTYP. Los tipos de ambos operands son primero comparado, si difieren que el operand mnimo de precisin se convierte para hacer juego con lo ms alto. Los operands son luego movidos a las colocaciones requeridas por las rutinas de matemticas. Para los enteros la primera parte que el operand es colocado en el par de registro Delaware y el segundo en registro parean a HL. Para la sola precisin la primera parte que el operand es colocado en registra a C, B, E, D y el segundo en DAC. Para la precisin doble el primer operand es colocado en DAC y el segundo en ARG. La seal del operador se usa luego para sacar la direccin requerida de la mesa en 3D51H, 3D5DH o 3D69H, dependiendo del tipo del operand, y las transferencias de control para la rutina pertinente de matemticas. La direccin ... 4DB8H Esta rutina es usada por el Evaluatodor Expression para dividir dos operands de entero. La primera parte que el operand es contenido en par de registro Delaware y el segundo en par de registro HL, el resultado es devuelto en DAC. Ambos operands se convierten para singularizar transferencias de precisin (2FCBH) y de control para la sola rutina de divisin de precisin (3265H). La direccin ... 4DC7H ste es el Evaluatodor Factor. En las proposiciones del par de registro de entrada HL para el carcter antes del factor a ser evaluado. En par de la registro de la salida HL apunta hacia el carcter siguiendo el factor, el resultado est en DAC y el cdigo de tipo en VALTYP. Un factor puede tener un ao de edad de lo siguiente: (1) UNA numrica o A de constante de la cuerda (2) la numrica o una A de la cuerda Variable (3) funcionan (4) UN operador mondico (+ - NO) (5) UNA expresin del parenthesized El primer carcter es tomado del texto de programa por lo - 129 -
La rutina del estndar CHRGTR y examinado. Si es un fin de carcter Statement un "operand perdido" error es generado (406AH). Si es un dgito de ASCII, entonces se convierte de forma textual para uno de los tipos numricos estndar en DAC (3299H). Si es caja alta alfabtica (64A8H) es un Variable y su valor coetneo es devuelto (4E9BH). Si es una seal numrica el nmero es copiada de CONLO para DAC (46B8H). Si es, entonces uno del FFH prefij valores simblicos de funcin exteriorizados en la mesa en 39DEH que es descifrado para transferir control para el manipulador pertinente (4ECFH) de funcin. Si es el operador mondico, entonces es simplemente saltado encima, slo el mondico "-" el operador (4E8DH) y "NOT" mondico operador (4F63H) precisan cualquier accin. Si es una cita inaugural la siguiente cuerda explcita es analizada y un descriptor creado (6636H). Si es uno "y" es una constante numrica poco decimal y eso es convertida a uno de los tipos numricos estndar en DAC (4EB8H). Si no es una de las funciones exteriorizadas debajo de luego debe ser una expresin del parenthesized (4E87H), entonces de otra manera un "error de sintaxis" es generado. Las siguientes seales de funcin son probadas para directamente y controlan transferidas para la direccin mostrada: YERRE.... 4DFDH ATTR$.... El 7C43H ERL.... 4E0BH VARPTR ... 4E41H El PUNTO.. 5803H USR....... El 4FD5H El TIEMPO ... 7900H INSTR.... El 68EBH El BLOQUE DE OBJETOS MOVIBLES. 7A84H INKEY$ ... 7347H VDP.... 7B47H STRING$.. El 6829H La BASE ... 7BCBH INPUT$ ... 6C87H El JUEGO ... 791BH CSRLIN ... 790AH El DSKI$.. 7C3EH FN....... El 5040H La direccin ... 4DFDH Esta rutina es usada por el Evaluatodor Factor para ejercer al "ERR" funcin. Los contenidos de ERRFLG son colocados en DAC como un entero (4FCFH). La direccin ... 4E0BH Esta rutina es usada por el Evaluatodor Factor para ejercer al "ERL" funcin. Los contenidos de ERRLIN son emulados para DAC como un solo nmero de precisin (3236H). La direccin ... 4E41H Esta rutina es usada por el Evaluatodor Factor para ejercer al "VARPTR" funcin. Si la seal de funcin es seguida por ah, entonces uno el nmero del amortiguador es evaluado (521BH), lo que yo / la O el amortiguador FCB localic (6A6DH) y que su direccin coloc en DAC como un entero (2F99H). De otra manera el Variable est ubicado (5F5DH) y su direccin coloc en DAC como un entero (2F99H). - 130 5. EL INTRPRETE DE BASIC ROM
La direccin ... 4E8DH Esta rutina es usada por el Evaluatodor Factor a aplicar lo mondico "-" el operador. La D de registro est colocada para un valor de precedencia de 7DH, el factor evaluado (4C67H) y luego negado (2E86H). La direccin ... 4E9BH Esta rutina es usada por el Evaluatodor Factor para devolver el valor coetneo de un Variable. El Variable est primero ubicado (5EA4H). Si es una cuerda Variable su direccin es colocada en DAC para apuntar hacia el descriptor. De otra manera los contenidos del Variable son emulados para DAC (2F08). La direccin ... 4EA9H Esta rutina devuelve el solo carcter hacia el que se apunt por par de registro HL en A de registro, si es una letra minscula alfabtica la convierte para la caja alta. La direccin ... 4EB8H Esta rutina es usada por el Evaluatodor Factor y la rutina numrica (3299H) de entrada para convertir a un nmero de ampersand Prefixed ("y") de forma textual a un entero en DAC. Como cada carcter legal es encontrado que el producto est multiplicado por 2, 8 o 16, dependientes en el carcter que inicialmente sigui el ampersand, y el dgito nuevo se sumaron a eso. Si el producto se derrama, entonces un "Overflow" error es generado (4067H). La rutina termina cuando un carcter inaceptable es encontrado. La direccin ... 4EFCH Esta rutina es usada por el Evaluatodor Factor para procesarle al FFH las seales colocadas como prefijo de funcin. Si la seal es cualquier "LEFT$", "RIGHT$" o "MID$" el operand de la cuerda es evaluado (4C62H), la direccin de su descriptor empujado encima de la pila Z80 y el siguiente operand numrica tambin evaluada (521CH) y se apila. De otra manera parenthesized operand de la funcin es evaluado (4E87H) y, para "SQR", "para RND", "para PECADO", "para LEO", "para EXP", "para LECHUGA ROMANA", "para BRONCEADO" o "para ATN" slo, convertido para duplicar precisin (303AH). La seal de funcin se usa luego para sacar la direccin requerida de la mesa en 39DEH y controlar transferencias para el manipulador de funcin. La direccin ... 4F47H Esta rutina es usada por la rutina numrica (3299H) de conversin de entrada a probar para uno o "-" el carcter o la seal. Devuelve registro D = 0 para D=FFH del positivo y de registro para la negativa. La direccin ... 4F57H Esta rutina es usada por el Evaluatodor Expression a aplicar uno
- 131 5. EL INTRPRETE DE BASIC ROM El operador del relational (< > = o las combinaciones) para un par de operands. Si los operands
son numricos, entonces la primera parte del Evaluatodor Expression usa la rutina del operador de matemticas (4D22H) para ejercer la operacin general de relacin para los operands. Si los operands son instrumentos de cuerda la rutina de comparacin de la cuerda (65C8H) son usados primero. Cuando el control llega aqu el resultado de relacin est en A de registro y los Z80 Flags: Operand 1 = Operand 2 ... UN = 00H, Flag Z, Carolina Del Norte Operand 1 < Operand 2 ... UN = 01H, Flag NZ, Carolina Del Norte Operand 1 > Operand 2 ... A=FFH, Flag NZ, C El Evaluatodor Expression tambin suministra una mscara mordida definiendo a los operadores originales en la pila Z80. Esto tiene uno 1 en cada colocacin si la operacin asociada es precisada: 00000. La mscara es aplicada para el resultado de relacin produciendo cero si ninguna de las condiciones est satisfecha. Esto es luego colocado en DAC como un entero verdadero (2E9AH) (- 1) o falso (0). La direccin ... 4F63H Esta rutina es usada por el Evaluatodor Factor para aplicar al "NOT" mondico operador. La D de registro est colocada para una precedencia inicial ras con ras de 5AH y la expresin evaluada (4C67H) y convertida a un entero (2F8AH). Est entonces invertido y recuperado para DAC. La direccin ... 4F78H Esta rutina es usada por el Evaluatodor Expression para aplicar a un operador lgico ("Oregon", "y", "XOR", "EQV" y "diablillo") o el "MOD" y los operadores para un par de operands numricos. El primer operand, cul ya ha sido convertido a un entero, es suministrado en la pila Z80 y el segundo es suministrado en DAC. La operadora a la seal (realmente su nivel de precedencia) est suministrada en B de registro. Despus de convertir el segundo operand a un entero (2F8AH) el operador es examinado. Hay rutinas separadas para "MOD" (323AH) y (31E6H) sino los operadores lgicos son procesados localmente usando las instrucciones lgicas Z80 correspondientes en pares de registro Delaware y HL. El resultado es almacenado en DAC como un entero (2F99H). La direccin ... 4FC7H Esta rutina es usada por el Evaluatodor Factor para ejercer a los "LPOS" funcin para un operand contenido en DAC. Los contenidos de LPTPOS son colocados en DAC como un entero (4FCFH). La direccin ... 4FCCH Esta rutina es usada por el Evaluatodor Factor para ejercer la funcin "de punto de venta" para un operand contenido en DAC. Los contenidos de TTYPOS son colocados en DAC como un entero (2F99).
- 132 5. EL INTRPRETE DE BASIC ROM La direccin ... 4FD5H Esta rutina es usada por el Evaluatodor Factor para ejercer al "USR" funcin. El nmero del
usuario es coleccionado directamente del texto de programa, no puede ser una expresin, y la direccin asociada tomada de USRTAB (4FF4H). El siguiente parenthesized operand es entonces evaluado (4E87H) e izquierdo en DAC como el parmetro aprobado. Si es una cuerda escriba a mquina, entonces su almacenamiento es liberado (67D3H). La posicin coetnea del texto de programa es empujado encima de la pila Z80 seguido por un regreso para 3297H, la rutina en esta direccin restaurar la colocacin del texto de programa despus de que la funcin del usuario haya terminado. El control luego las transferencias para la direccin del usuario con par de registro HL apuntando hacia el primer byte de DAC y el cdigo de tipo, de VALTYP, adentro registra UNO. Adicionalmente, para un parmetro de la cuerda, la direccin de descriptor es tomada de DAC y est posado en par de registro Delaware. La rutina del usuario puede modificar cualquier registro excepto el Z80 SP y debera terminar con una instruccin RET, interrumpe puede quedarse deshabilitado si es necesario como el Runloop los reposibilitar. Cualquier parmetro numrico a ser devuelto al Interpreter debera ser colocado en DAC. En rigor ste debera ser el mismo tipo numrico como el parmetro aprobado, de cualquier forma que si VALTYP es modificado que el Interpreter siempre lo aceptar. Devolver un tipo de la cuerda es ms difcil. Usando el mismo mtodo como las funciones de la cuerda del Evaluatodor Factor, que involucra a copiar la cuerda para el String Storage Area y empujando un descriptor nuevo encima de TEMPST, est complicado y vulnerable para los cambios en el sistema MSX. Un ms simple y ms mtodo fidedigno es usar el parmetro aprobado para crear el espacio para el resultado. sta no debera ser una cuerda explcitamente declarada como el programa que el texto tendr para ser modificado, en lugar de eso un parmetro implcito debera ser usado. Esto debe haber terminado con cuidado sin embargo, es demasiado fcil ganar la impresin que el Interpreter ha aceptado la cuerda cuando de hecho no tiene. Tome el siguiente ejemplo que las gamas nada excepto devuelven el parmetro aprobado: 10 ATIZAN y H9000, y HC9 20 DEFUSR = y H9000 30 A$ = USR (STRING$ (12, "!)) 40 ESCRIBEN EN LETRAS DE IMPRENTA a A$ 50 B$ STRING$ (9, "X") 60 ESCRIBEN EN LETRAS DE IMPRENTA a A$ Al principio parece que la cuerda aprobada haya estado correctamente asignada para A$. Cuando la lnea 60 es alcanzada sin embargo se vuelve aparente que A$ haya sido corrompido por la subsig uiente asignacin de una cuerda para B$. Lo que ha ocurrido es que el almacenamiento temporal ubic para el parmetro aprobado fue rescatado del String Storage Area antes del control transferido para la rutina del usuario. Esta regin se us luego para almacenar la cuerda perteneciendo a B$ as modificando a A$.
- 133 5. EL INTRPRETE DE BASIC ROM Esta situacin puede ser evitada asignando el parmetro a un Variable de antemano y luego pasando al Variable, por ejemplo: 10 A$ STRING$ (12, "!) 20 A$ = USR (A$)
Revista 10 resultados en doce bytes de la String Storage Area siendo permanentemente ubicado para A$. Cuando la funcin del usuario es introducida el descriptor, cul es hacia el que se apunt por par de registro Delaware, contendr la puesta en marcha direccin de la regin de doce bytes donde el resultado debera ser colocado. Si la cuerda devuelta es ms corta que la aprobada el byte de largo del descriptor puede variarse sin cualquier efectos secundarios. Pues los ms detalles en el almacenamiento de la cuerda ven al colector de basuras (66B6H). Un punto que vale notar es que una operacin "cristalina" no es estrictamente menester antes de que un programa de lenguaje de mquina sea cargado. La regin entre la parte superior del Array Storage Area y la base de la pila Z80 no es nunca usada por el Interpreter. Un programa puede existir en esta regin con tal que las dos reas de acorralamiento no lo traslapan. La direccin ... 500EH ste es el "DEFUSR" manipulador de declaracin. El nmero del usuario es coleccionado directamente del texto de programa, no puede ser una expresin, y la entrada asociada en USRTAB localizado (4FF4H). El operand de la direccin es entonces evaluado (542FH) y colocado en USRTAB. La direccin ... 501DH ste es el "DEF FN" y "DEFUSR" manipulador de declaracin. Si el siguiente carcter es, entonces un "USR" que el control de la seal (DDH) transfiere para el "DEFUSR" manipulador de declaracin (500EH), de otra manera el texto de programa es comprobado para un "FN" de arrastre seal (DEH). El nombre de funcin Variable es hallado (51A1H) y, despus de comprobar que el Interpreter est en el modo de programa (5193H), la colocacin coetnea del texto de programa es colocada all. Cada uno de los Variables en la lista formal de parmetro estn luego localizados uno tras otro (5EA4H), ste lo est simplemente para asegurar que ellos son creados. La rutina termina pasando por alto el resto de la declaracin (485BH) como el cuerpo de funcin no es requerido a esta hora. La direccin ... 5040H Esta rutina es usada por el Evaluatodor Factor para ejercer al "FN" funcin. El nombre de funcin Variable est primero ubicado (51A1H) a obtener la direccin de la definicin de funcin en el texto de programa. Cada Variable formal de la definicin de funcin est ubicado a su vez (5EA4H) y su direccin empujada encima de la pila Z80. Como cada uno es encontrado el parmetro real correspondiente es evaluado (4C64H) y empujado encima de la pila con eso. Si - 134 5. EL INTRPRETE DE BASIC ROM
Necesario el tipo del parmetro real se convierte para hacer juego con eso del parmetro formal (517AH) ' Cuando ambas listas estn exhaustos cada direccin Variable formal y parmetro real son a los que se hizo estallar de la pila a su vez. Cada Variable es entonces copiado del Storage Variable Area para PARM2 con su valor repuesto por el parmetro real. Debera ser notable que, porque el PARM2 tiene slo cien bytes de largo, un mximum de nueve parmetros dobles de precisin est permitido. Cuando todos los parmetros reales han sido emulados para PRM2 los contenidos enteros de PARM1 (el rea coetneo de parmetro) son empujados encima del Z80 pila y PARM2 es emulado para PARM1 (518EH). El par de registro HL est luego colocado al
principio del cuerpo de funcin en el texto de programa y la expresin es evaluada (4C5FH). Los contenidos viejos de PARM1 son a los que se hizo estallar de la pila y restituidos. Finalmente el resultado de la evaluacin es tipo converso si es necesario para hacer juego con el tipo de nombre de funcin (517AH). Un usuario defini funcin difiere de una expresin normal en el respeto de nico, tiene su propio set del local Variables. Estas Variables son creadas en PARM1 cuando la funcin es invocada y desaparezca cuando termina. Cuando una bsqueda Variable normal es iniciada por el Evaluatodor Expression la regin examinada es el Storage Variable Area. Sin embargo, si NOFUNS es poco cero, entonces indicando al menos una funcin activa del usuario, PARM1 ser registrado en lugar de eso, slo si esto yerra voluntad el movimiento de bsqueda adelante para el Variables global en el Storage Variable Area. Usar un local rea Variable especfico para cada invocacin de una funcin quiere decir que los mismos nombres Variables pueden ser usados completamente sin los Variables sobrescribiendo a cada quien o el Variables global. Vale notar que un usuario defini funcin es ms lento que una expresin del inline o empareje una subrutina. La bsqueda ejecutada para encontrar el nombre de funcin Variable, y la cantidad grande de hacinamiento y destacking, son gastos generales significativos. La direccin ... 5189H Estos movimientos de rutina por los que un bloque de memoria de la direccin apunt registran par Delaware para tan apuntado para por par de registro HL, el par de registro AC define el largo. La direccin ... 5193H Esta rutina genera un error "directo ilegal" si CURLIN muestra al Interpreter estar de modo directo. La direccin ... 51A1H Esta rutina comprueba el texto de programa para un "FN" seal (DEH) y luego crea el nombre de funcin Variable (5EA9H). Estos son distinguidos de Variables ordinarias habiendo mordido 7 estar listo en el primer carcter de nombre de Variable.
La direccin ... 51ADH El control se traslada para esta rutina del punto de ejecucin Runloop (4640H) si una seal ms gran que D8H es encontrado al principio de una declaracin. Si la seal no es, entonces un FFH prefij valor simblico de funcin un "error de sintaxis" es generado (4055H). Si la seal de funcin es una de esas que se doblan como las transferencias de control de declaraciones para el manipulador pertinente, de otra manera un "error de sintaxis" es generado. Las declaraciones en duda son "MID$" (696EH), "STRIG" (77BFH) y "intervalo" (77B1H). Hay realmente ninguna seal separada para "el INTERVALO", el "INT" seal (85H) sacia con los personajes restantes siendo al que se dio jaque por el manipulador de declaracin. La direccin ... 51C9H ste es la "anchura" manipulador de declaracin. El operand es evaluada (521CH) y su magnitud comprobada. Si es cero o ms gran que treinta y dos o cuarenta, entonces depender del modo de la pantalla sostuvo en OLDSCR una "llamada ilegal de funcin" error es generada
(475AH). Si es lo mismo que la corriente contenta de LINLEN, entonces la rutina termina sin fomenta accin. De otra manera la pantalla en uso en estos momentos es despejada con un cdigo de control FORMFEED (0CH) por la rutina del estndar OUTDO en caso la pantalla debe ser a la que se hizo ms pequeo. El operand es luego colocado en LINLEN y ya sea LINL32 o LINL40, dependiendo de la pantalla que el modo mantuvo en OLDSCR, y que la pantalla despej otra vez en caso ha estado hecha ms grande. Porque el largo de la lnea variable para estar cambiado es seleccionado por OLDSCR, en vez de SCRMOD, la anchura todava puede variarse aun si la pantalla est actualmente de Modo Graphics o el Multicolor Mode. En este caso el cambio es efectivo cuando un regreso hace al Interpreter Mainloop o una "entrada" declaracin es ejecutada. La direccin ... 520EH Esta rutina evala la siguiente expresin en el texto de programa (4C64H), le convierte a ella para un entero (2F8AH) y coloca el resultado en par de registro Delaware. La magnitud y signo del MSB son entonces probados y la rutina termina. La direccin ... 521BH Esta rutina evala el siguiente operand en el texto de programa (4C64H) y la convierte para un entero (5212H). Si el operand es mayor que 255 que un error "ilegal de llamada de funcin" es generado (475AH). La direccin ... 5229H ste es el "LLIST" manipulador de declaracin. PRTFLG est listo para 01H, a dirigir salida para la impresora, y controlar cae en la "lista" manipulador de declaracin.
La direccin ... 522EH ste es la "lista" manipulador de declaracin. El principio optativo y operands de nmero de la lnea de terminacin son coleccionados y la puesta en marcha que la colocacin encontr en el texto de programa (4279H). El rayado sucesivo de programa est listado hasta que el enlace de fin es encontrado, la llave CTRL-STOP se aprieta o el nmero de la lnea de terminacin es alcanzado, el control luego transfiere directamente para el punto Mainloop "Oklahoma" (411FH). Cada lnea de programa est listada exhibiendo su nmero de la lnea (3412H), detokenizing (5284H) y exhibiendo (527BH) la lnea misma y luego emitiendo un RETORNO DE CARRO, LF (7328H). La direccin ... 5284H Esta rutina es usada por la "lista" manipulador de declaracin para convertir una lnea de programa del tokenized a la forma textual. En las proposiciones del par de registro de entrada HL para el primer carcter de la lnea del tokenized. En salida la lnea de texto est en BUF y es terminada por un byte de cero. Cualquier normalidad o FFH prefij valor simblico es convertido a la palabra clave correspondiente por una bsqueda lineal simple de las seales en la mesa en 3A72H. Las excepciones estn hechas si ya sea un carcter de cita de la abertura, un "REM" seal, o una "DATA" seal previamente ha sido encontrada. Normalmente estas seales sern seguidas por
el texto puro de cualquier manera, el cheque est hecho para detener personajes de grficos siendo interpretado como seales. La secuencia de tres bytes "" (3AH), "REM" seal (8FH), seal (E6H) es convertido al solo carcter (27H) y el separador de declaracin (3AH) precediendo una seal "distinta" (A1H) es al que se limpi restregando. Si una de las seales numricas es encontrada, entonces su valor y su tipo son primero emulado de CONLO y CONTYP para DAC y VALTYP (46E8H). Es luego convertido a forma textual en FBUFFR por lo decimal (3425H), octal (371EH) o rutinas de conversin hex (3722H). Para octal y los tipos hex el nmero es prefijado por un ampersand y una "O" o "H" carta. Un sufijo de tipo, "o, se agrega para singularizar nmeros de precisin o de precisin doble slo si no hay parte decimal y ninguna parte del exponente (" E "o" D "). La direccin ... 53E2H ste es el "DELETE" manipulador de declaracin. El principio optativo y operands de nmero de la lnea de terminacin son coleccionados y la puesta en marcha que la colocacin encontr en el texto de programa (4279H). Si cualquier punteros existen en el texto de programa, entonces se convierten de regreso a revestir nmeros (54EAH). La lnea de programa que termina es encontrada por una bsqueda del texto de programa (4295H), si esta direccin es ms pequea que eso del programa de puesta en marcha reviste un "llamado de pjaro ilegal de funcin" error es generado (475AH), de otra manera el mensaje "bien" es exteriorizado (6678H). El bloque de memoria del fin de la lnea que termina para el principio del Storage Variable Area es reproducido con mucha exactitud al comienzo de la lnea de salida y VARTAB, ARYTAB y STREND son vueltos a arrancar el nuevo (muvase hacia abajo)
El fin del texto de programa. El control luego se traslada directamente hasta el fin del Mainloop (4237H) para volver a arrancar los punteros restantes y reconectar el Contorno Program Text. Note eso, porque el control no regrese a la normalidad "apruebe" punto, la pantalla no ser devuelto a modo del texto. Si la pantalla est de Modo Graphics o modo Multicolor cundo un "DELETE" es ajusticiado, entonces cul es reconocidamente ms bien improbable, el sistema se derrumbar. La direccin ... 541CH Esta rutina es usada por el Evaluatodor Factor para ejercer el "atisbo" funcin para un operand contenido en DAC. El operand de la direccin es comprobado (5439H) luego la lectura de byte de memoria y colocado en DAC como un entero (4FCFH). La direccin ... 5423H ste es el "pinchazo" manipulador de declaracin. El operand de la direccin es evaluado (542FH) luego el operand de datos evaluado (521CH) y est escrito para la memoria. La direccin ... 542FH Esta rutina evala el siguiente operand en el texto de programa (4C64H) y coloca ella en par de registro Delaware como un entero (5439H). La direccin ... 5439H Estos conversos de rutina que el operand numrico contuvo en DAC en un entero en registro
parean a HL. El operand debe estar del rango - 32768 para + 65535 y son normalmente una direccin segn lo solicitado por "pinchazo", "atisbo", "BLOAD", etc. El tipo de operand es primero a cuadros por la rutina del estndar GETYPR, si es ya un entero que es simplemente colocado en el par de registro HL (2F8AH). Asumir el operand es sola precisin o precisin doble su signo es comprobada, si es negativo, entonces sea convertido a entero (2F8AH). De otra manera se convierte para singularizar precisin (2FB2H) y su magnitud comprobada (2F21H). Si es mayor que 32767 y ms pequeo que 65536 luego - 65536 se agregan (324EH) antes de que sea convertido a entero (2F8AH). La direccin ... 5468H ste es el "RENUM" manipulador de declaracin. Si un operand inicial nuevo de nmero de la lnea existe es coleccionado (475FH), entonces de otra manera un valor predeterminado de diez de tomado. Si un operand inicial viejo de nmero de la lnea existe es coleccionado (475FH), diferente, entonces un valor predeterminado de cero sea tomado. Si un operand de nmero de la lnea de incremento existe es coleccionado (4769H), diferente, entonces un valor predeterminado de diez sea tomado. El texto de programa es entonces registrado para nmeros de la lnea existentes iguales para o ms gran que el nmero inicial nuevo (4295H) de la lnea
Y el viejo nmero inicial (4295H) de la lnea, una "llamada ilegal de funcin" error es generado (475AH) si la direccin nueva es ms pequea que la direccin vieja. Esto debe percibir cualquier intento en volver a numerar rayado alto de programa abajo para los bajo existentes. Una carrera falsa que vuelve a numerar del texto de programa es primero efectuada a inspeccionar que ningn nmero nuevo de la lnea ser generado con un valor mayor que 65529. Esto debe estar hecho como un error a medio camino a travs de la conversin dejara el texto de programa en una condicin confundida. Asumir todo est sano que cualquier operands de nmero de la lnea en el texto de programa son convertidos a punteros (54F6H). Esto pulcramente soluciona el problema de referencias de nmero de la lnea, GOTO 50 por ejemplo, como el texto de programa no es movido durante volver a numerar. Echando a andar en la colocacin inicial vieja del texto de programa cada nmero existente de la lnea de programa es reemplazado con su valor nuevo. Cuando el enlace de fin es alcanzado cualquier punteros del texto de programa se convierten de regreso a revestir nmero operands (54F1H) y el control transfiere directamente para el punto Mainloop "Oklahoma" (411EH). La direccin ... 54F6H Estando entrada en 54F6H esta rutina convierte cada operand de nmero de la lnea en el texto de programa a un puntero. Estando entrado en 54F7H realiza la operacin inversa y convierte cada puntero en el texto de programa de regreso a un operand de nmero de la lnea. Empezando desde el principio del Program Text Area cada lnea es examinado para una seal del puntero (0DH) o una seal del operand de nmero de la lnea (0EH) dependiendo del modo. En puntero para revestir modo del operand de nmero el puntero es reemplazado por el nmero de la lnea de la lnea a la que se puso notas de programa y que la seal cambi para 0EH. En operand de nmero de la lnea para el modo del puntero el texto de programa es registrado (4295H) para encontrar la lnea pertinente, su direccin reemplaza el operand de nmero de la lnea y la seal se vara para 0DH. Si la bsqueda est sin xito que un mensaje de la forma "lnea indefinido NNNN en NNNN" es exhibido (6678H) y el proceso de conversin contina. Un cheque especial es al que se parti rumbo lo "en para ERROR GOTO 0" para declaracin, a
impedir la generacin de un mensaje espurio de error, pero ningn cheque est hecho para el "curriculum vitae" similar "0" declaracin. En este caso un mensaje de error ser exteriorizado, ste debera estar ignorado. La direccin ... 555AH ste es el mensaje de texto puro "lnea indefinida" terminada por un byte de cero. La direccin ... 558CH El nombre...... SYNCHR La entrada..... Las proposiciones HL para el carcter a comprobar La salida...... Un = Siguiente carcter de programa Modifica.. AF, HL La rutina estndar para comprobar el carcter coetneo del texto de programa, a cuya direccin est suministrada en par de registro HL
- 139 5. EL INTRPRETE DE BASIC ROM En contra de un carcter remisivo. El carcter remisivo es suministrado como un solo byte inmediatamente despus de la LLAMADA o la instruccin RST, por ejemplo: RST 08H DEFB Si los personajes no hacen juego con un "error de sintaxis" es generado (4055H), entonces las transferencias diferentes de control para la rutina del estndar CHRGTR para ir a traer el siguiente personaje de programa (4666H). La direccin ... 5597H El nombre...... GETYPR La entrada..... Ninguno La salida...... AF = Escriba A Mquina Modifica.. AF La rutina estndar para devolver el tipo del operand actual, decidido por VALTYP, como sigue: El entero..............Un = FFH, Flag M, NZ, C La cuerda...............Un = 00H, Flag P, Z, C Singularice a Precision ... UN = 01H, Flag P, NZ, C Duplique Precisin ... UN = 05H, Flag P, NZ, Carolina Del Norte La direccin ... 55A8H ste es la "llamada" manipulador de declaracin. El nombre extendido de declaracin, cul es una cuerda no citada hasta quince personajes por mucho tiempo ultimados por uno "(", "" O el fin de carcter de la lnea (00H), es primero copiado del texto de programa para PROCNM, cualquier bytes sin uso son cero lleno. El bit 5 de cada entrada en SLTATR es entonces examinado para una extensin ROM con un manipulador de declaracin. Si un ROM adecuado es encontrado, entonces su colocacin en SLTATR es convertida a un Slot Idaho en A de registro y una direccin de la base ROM en registro H (7E2AH). La direccin del manipulador de a declaracin le son ledos de posiciones ROM cuatro cinco (7E1AH) y estn posado en par de registro IX. El
Slot Idaho es colocado en el byte alto de par de registro IY y el ROM que el manipulador de declaracin llam por la rutina del estndar CALSLT. El ROM examinar el nombre de declaracin y C de regreso Flag si no lo reconoce, de otra manera realiza la operacin requerida. Si la llamada ROM no se logra, entonces la bsqueda de SLTATR contina hasta que la mesa est agotada despus de lo cual un "error de sintaxis" es generado (4055H). Si la llamada ROM tiene xito el manipulador termina. La direccin ... 55F8H Esta rutina es usada por el analizador gramatical de nombre del dispositivo (6F15H) cuando no puede reconocer un dispositivo que el nombre encontr en el texto de programa. En registro de entrada las proposiciones del par HL para el primer carcter del nombre y los agarres de la B de registro su largo. El nombre es primero emulado para PROCNM y terminado por un byte de cero. El Bit 6 De Cada Uno - 140 5. EL INTRPRETE DE BASIC ROM La entrada en SLTATR es entonces examinada para una extensin ROM con un manipulador del dispositivo. Si un ROM adecuado es encontrado, entonces su colocacin en SLTATR es convertida a un Slot Idaho en A de registro y una direccin de la base ROM en registro H (7E2AH). La direccin del manipulador del a dispositivo le son ledos de posiciones ROM seis siete (7E1AH) y estn posado en par de registro IX. El Slot Idaho es colocado en el byte alto de par de registro IY, el cdigo desconocido (FFH) del dispositivo en A de registro y el ROM que el manipulador del dispositivo llam por la rutina del estndar CALSLT. El ROM examinar el nombre del dispositivo y C de regreso Flag si no lo reconoce, de otra manera devuelve su propio cdigo interno de cero a tres. Si la llamada ROM no se logra, entonces la bsqueda de SLTATR contina hasta que la mesa est agotada despus de lo cual un "mal nombre del archivo" error es generado (6E6BH). Si la llamada ROM tiene xito el cdigo interno de ROM est aadido para su SLTATR la colocacin, entonces multiplicado por un factor de cuatro, para producir un cdigo global del dispositivo ' El cdigo bajo pues cada entrada en SLTATR es exteriorizado en hexadecimal. Los "SS" y "postdata" rotuladores muestran los correspondientes nmeros Secundarios y Primarios Slot, cada ranura est compuesta de cuatro pginas: SS0 SS1 SS2 SS3 + 00 04 08 0C 10 14 18 1C 20 24 28 2C 30 34 38 3C PS0 + 40 44 48 4C 50 54 58 5C 60 64 68 6C 70 74 78 7C PS1 + 80 84 88 8C 90 94 98 el PS2 de CORRIENTE ALTERNA 9C A0 A4 A8 B0 B4 B8 BC + La CD de la COPIA C0 C4 C8 D0 D4 D8 E0 E4 E8 EC F0 F4 F8 FC PS3 + Figura 44: El dispositivo Codes El cdigo global del dispositivo es usado por el Interpreter hasta que el tiempo venga por que el ROM realice una operacin real del dispositivo. Se convierte luego de vuelta a Slot Idaho de ROM, direccin bajo y cdigo interno del dispositivo para realizar el acceso ROM. Noto que los cdigos de 0 para 8 son reservados para
identificadores de la unidad de disco y esos de FCH para FFH para el dispositivos estndar GRP, CRT, LPT y CAS. Con el hardware MSX en uso en estos momentos estructuran estos cdigos sea propio fsicamente configuraciones improbables ROM y sea por consiguiente caja fuerte para servir para propsitos especficos por el Interpreter. La direccin ... 564AH Esta rutina es usada por el repartidor de funcin (6F8FH) cuando no encuentra un cdigo del dispositivo formando parte de uno de los dispositivos estndar. El cdigo del dispositivo es primero convertido a una colocacin SLTATR y luego para un Slot Idaho en A de registro y la direccin de la base ROM en registro H (7E2DH). El manipulador del dispositivo ROM
A la direccin le son ledos de posiciones ROM seis siete (7E1AH) y estn posado en par de registro IX. El Slot Idaho es colocado en el byte alto de par de registro IY, el cdigo interno del dispositivo de ROM en DISPOSITIVO y el ROM que el manipulador del dispositivo llam por la rutina del estndar CALSLT. La direccin ... 566CH Este punto de entrada para el analizador gramatical de lenguaje de macro es usado por el "empate" manipulador de declaracin, un posterior punto de entrada (56A2H) es usado por el "juego" manipulador de declaracin. La cuerda de orden es evaluada (4C64H) y su almacenamiento liberado (67D0H). Despus de empujar un bloque de terminacin de cero encima de la pila Z80 el pedazo y la direccin del cuerpo de la cuerda es colocado en MCLLEN y MCLPTR y controle cadas en el mainloop de analizador gramatical. La direccin ... 56A2H ste es el analizador gramatical de lenguaje de macro mainloop, se usa para tramitar la cuerda de orden asociada con un "empate" o "jugar" declaracin ' En la entrada el largo de la cuerda est en MCLLEN, la direccin de la cuerda est en MCLPTR y la direccin de la mesa pertinente de orden est en MCLTAB. Las mesas de orden contienen las cartas legales de orden, conjuntamente con las direcciones asociadas del manipulador de orden, para cada declaracin. El "empate" mesa est en 5D83H y el "juego" mesa en 752EH. La primera parte del mainloop de analizador gramatical va a traer al siguiente personaje de la cuerda de orden (56EEH). Si hay ningn ms izquierda de personajes el siguiente descriptor de la cuerda es a la que se hizo estallar de la pila (568CH). Si esto es ponga en el cero, entonces el analizador gramatical termina (5709H) si MCLFLG se ve un "empate" declaracin para ser activo, el control diferente se traslada de regreso al "juego" manipulador de declaracin (7494H). Asumir un carcter de orden existe que la mesa de orden en uso en estos momentos es registrada para comprobar su legalidad, si ningn encuentro es encontrado que una "llamada ilegal de funcin" error es generada (475AH). La entrada de la mesa de orden es entonces examinada, si es mordida 7 es determinado que la orden toma un parmetro numrico optativo. Si esto est presente, entonces es coleccionado y colocado en par de registro Delaware (571CH), de otra manera un valor predeterminado de uno es tomado. Despus de empujar una declaracin de impuestos para el principio del mainloop de analizador gramatical encima del Z80 que el control de la pila transfiere para el manipulador de orden en la direccin tomada de la mesa de orden.
La direccin ... 56EEH Esta rutina es usada por el analizador gramatical de lenguaje de macro para ir a traer al siguiente personaje de la cuerda de orden. Si MCLLEN es ponga en el cero, entonces la rutina termina con Flag Z, no hay personajes a la izquierda. De otra manera el siguiente carcter es tomado de la direccin contenida en MCLPTR y regresado en A de registro, si el carcter es letra minscula que es convertida a la caja alta. MCLPTR es entonces incrementado y decremento MCLLEN Ed.
La direccin ... 570BH Esta rutina es usada por el analizador gramatical de lenguaje de macro para devolver un carcter no deseado a la cuerda de orden. MCLLEN es incrementado y MCLPTR decremented. La direccin ... 5719H Esta rutina es usada por el analizador gramatical de lenguaje de macro para coleccionar un parmetro numrico de la cuerda de orden. El resultado es un entero indicado a travs de seas y es devuelto en par de registro Delaware, no puede ser una expresin. El primer carcter es tomado y examinado, si es uno que eso est ignorado y el siguiente carcter tomado (5719H). Si es uno "-" un regreso es establecido a la rutina de negacin (5795H) y el siguiente carcter tomado (5719H). Si es uno el valor del siguiente Variable es devuelto (577AH). Los personajes sucesivos diferentes son timados y un producto binario acumulado hasta que un carcter poco numrico sea encontrado. La direccin ... 575AH Esta rutina es usada por el analizador gramatical de lenguaje de macro y "X" manipuladores. El nombre Variable es emulado para BUF hasta lo "" El delimitador es encontrado, si esto toma ms que treinta y nueve personajes para encuentra una "funcin ilegal llamen" error es generado (475AH). Las transferencias diferentes de control para el manipulador del Evaluatodor Factor Variable (4E9BH) y los contenidos Variables son devueltos en DAC. La direccin ... 577AH Esta rutina es usada por el analizador gramatical de lenguaje de macro para tramitar el carcter en un parmetro de orden. El valor de Variable es obtenido (575AH), convertido para un entero (2F8AH) y est posado en par de registro Delaware. La direccin ... 5782H Esta rutina es usada por el analizador gramatical de lenguaje de macro para tramitar a la "X" orden. El Variable es procesado (575AH) y, despus de comprobar que el espacio de la pila es disponible (625EH), los contenidos coetneos de MCLLEN y MCLPTR son apilados. El control luego se traslada para el punto de entrada de analizador gramatical (5679H) para obtener el descriptor de Variable y procesar la cuerda nueva de orden. La direccin ... 579CH Esta rutina es usada por declaraciones diversas de grficos para evaluar un par coordinado en
el texto de programa. Las coordenadas deben ser parenthesized con una coma distanciando los operands componentes. Si el par coordinado es precedido por un "paso" seal (DCH) cada valor componente se agrega para el componente correspondiente de las coordenadas coetneas de grficos en GRPACX y GRPACY, entonces de otra manera los valores absolutos son devueltos. La X
La coordenada es devuelta en GRPACX, GXPOS y registro parean AC. La coordenada de la Y es devuelta en GRPACY, GYPOS y registro parean Delaware. Hay dos proposiciones de entrada para la rutina, el que es usada depende en si la persona que llama est esperando ms que un par coordinado. La "lnea" declaracin, por ejemplo, espera dos pares coordinados la primera parte de la cual sea lo ms flexibles. El punto de entrada en 579CH se usa para coleccionar el primer par coordinado y los aceptar a los personajes "-" o @ "-" tan representadores las coordenadas coetneas de grficos. El punto de entrada en 57ABH sirve para el segundo par coordinado y requiere un operand explcito. La direccin ... 57E5H ste es el manipulador "preprogramado" de declaracin. El color de fondo actual es tomado de BAKCLR y el control cae en el "PSET" manipulador. La direccin ... 57EAH ste es el "PSET" manipulador de declaracin. Despus de que el par coordinado haya sido evaluado (57ABH) el color actual del primer plano es tomado de FORCLR y es utilizado como el incumplimiento cundo colocando el color de tinta (5850H). Las coordenadas coetneas de grficos son convertidas a una direccin fsica, por el SCALXY y rutinas del estndar MAPXYC, y el color del pixel en uso en estos momentos se sedimenta por la rutina del estndar SETC. La direccin ... 5803H Esta rutina es usada por el Evaluatodor Factor para ejercer el "punto" funcin. Los contenidos coetneos de CLOC, CMASK, GYPOS, GXPOS, GRPACY y GRPACX son apilados y el par de coordenada operand evaluado (57ABH). El color del pixel nuevo es ledo por el SCALXY, MAPXYC y rutinas del estndar READC y colocado en DAC como un entero (2F99H), los valores coordinados viejos son entonces a los que se hizo estallar y recuperados. Note ese un valor de 1 es devuelto si las coordenadas del punto estn fuera de la pantalla. La direccin ... 5850H Esta rutina de grficos se usa para evaluar un operand optativo de color en el texto de programa y hacerle a ella el color de tinta de corriente. Despus de comprobar el modo de la pantalla (59BCH) el operand de color es evaluado (521CH) y colocado en ATRBYT. Si ningn operand existe, entonces el color que el cdigo suministr en A de registro es colocado en ATRBYT en lugar de eso. La direccin ... 5871H Estos grficos que la rutina devuelve la diferencia entre los contenidos de GXPOS y este registro parean AC en par de registro HL. Si
- 144 5. EL INTRPRETE DE BASIC ROM El resultado es negativo (GXPOS<BC) que es negado para producir la magnitud absoluta y la C Flag es devuelta. La direccin ... 5883H Estos grficos que la rutina devuelve la diferencia entre los contenidos de GYPOS y este registro parean Delaware en par de registro HL. Si el resultado es negativo (GYPOS<DE), entonces es negado para producir la magnitud absoluta y la C Flag es devuelta. La direccin ... 588EH Esta rutina de grficos intercambia los contenidos de GYPOS y el par de registro Delaware. La direccin ... 5898H Esta primera parte de rutina de grficos intercambia los contenidos de GYPOS y el par de registro Delaware (588EH) luego intercambia los contenidos de GXPOS y el par de registro BC. Estando entrada en 589BH slo la segunda operacin es realizada. La direccin ... 58A7H ste es la "lnea" manipulador de declaracin. La primera coordenada que el par (X1, Y1) es evaluado (579CH) y acomodado en registro parea a BC, Delaware. Despus de inspeccionar para lo "-" la seal (F2H) el segundo par coordinado (X2, Y2) es evaluada (57ABH) e izquierda en GRPACX, GRPACY y GXPOS, GYPOS. Despus de colocar el color de tinta (584DH) el texto de programa es comprobado para una siguiente "B" o "BF" opcin y ya sea la caja (5912H), boxfill (58BFH) o la operacin linedraw (58FCH) realizada. Ninguno de estos afectos de operaciones los grficos actuales coordinan en GRPACX y GRPACY, stos es dejado en X2, Y2. La direccin ... 58BFH Esta rutina realiza la operacin del boxfill. Como quiera que la coordenada abastecida que los pares definen diagonalmente a los que se opuso ensear con el dedo de la caja dos cantidades deben estar derivativo de ellas. El tamao horizontal de la caja es obtenido de la diferencia entre X1 y X2, ste da el nmero de pixels para colocar por fila. El tamao vertical es obtenido de la diferencia entre Y1 y Y2 dando el nmero de filas requeridas. Comenzando en la direccin fsica de X1, Y1, y mudndose sucesivamente ms bajo por la rutina del estndar DOWNC, el nmero requerido de filas del pixel es rellenado por el repetido uso de la rutina del estndar NSETCX. La direccin ... 58FCH Esta rutina realiza la operacin del linedraw. Despus de sacar el lnea (593CH) GXPOS y GYPOS es vuelta a arrancar para X2, Y2 de GRPACX y GRPACY.
La direccin ... 5912H Esta rutina realiza la operacin de la caja. La caja se produce trazando una lnea (58FCH) entre cada uno de las cuatro proposiciones rinconeras. Las coordenadas de cada esquina estn derivativas de los operands iniciales intercambiando el componente pertinente del par. La secuencia del dibujo es: (1) X1, Y2 Para X2, Y2 (2) X1, Y1 Para X2, Y1 (3) X2, Y1 Para X2, Y2 (4) X1, Y1 Para X1, Y2 La direccin ... 593CH Esta rutina saca una lnea entre el proposiciones X1, Y1, abastecida en pares de registro BC y Delaware y X2, Y2, abastecido en GXPOS y GYPOS. La operacin del dibujo mainloop (5993H) es ms conveniente ilustrada por un ejemplo, diga LNEA (0,0) - (10,4). Para alcanzar el punto de fin de la lnea de su decena de principio los pasos horizontales (X2-X1) y lo cuatro hacia abajo los pasos (Y2-Y1) deben ser tomados enteramente. La mejor aproximacin para una lnea recta por consiguiente requiere dos y unos pasos medio horizontales para cada paso descendente (X2-X1/Y2-Y1). Mientras esto es imposible en la prctica, como los pasos slo integrales pueden ser tomados, la proporcin correcta puede ser lograda por trmino medio. El mtodo utilizado es aadir la diferencia de la Y para un mueble mostrador cada vez que un paso del rightward es tomado. Cuando el mueble mostrador excede el valor de la diferencia de la X es puesto a cero y uno descendente que el paso es tomado, ste est de efecto una divisin de entero de los dos valores de diferencia. Algunas veces los pasos descendentes se producirn cada dos pasos del rightward y algunas veces cada tres pasos del rightward. El promedio, sin embargo, ser un paso descendente cada dos y un medio rightward dan un paso. Un programa equivalente de BASIC es mostrado debajo con uno ligeramente lnea de BASIC de offset para la comparacin: 10 OCULTAN 0 20 INPUT"START X, Y ";X1, Y1 30 INPUT"END X, Y ", X2, Y2 40 OCULTAN 2 50 X = X1:Y = Y1:X2-X1 L:Y2-Y1 S:CTR = L/2 60 PSET (X, Y) 70 CTR=CTR+S:SI CTR<L LUEGO 90 80 CTR CTR-L:Y=Y + 1 90 X=X + 1:IF X < = X2 THEN 60 100 REVISTEN (X1, Y1+5) - (X2, Y2+5) 110 GOTO 110 El citado anteriormente ejemplo padece de tres limitaciones. La lnea debe inclinarse hacia abajo, debe inclinarse a la derecha y la cuesta no puede exceder cuarenta y cinco grados de lo horizontal (un paso descendente para un paso del rightward).
comienza. Si Y2 es mayor o corresponda a para Y1, entonces acompaando la lnea a cuesta arriba o a ser horizontal, ambos los pares coordinados son intercambiados. La lnea ahora se inclina hacia abajo y ser sacada del punto de fin para el principio. La segunda limitacin se subsana examinando a X1 y X2 de antemano para determinar por dnde la lnea son inclinarse. Si X2 es mayor o igual para X1 la lnea se inclina a la derecha y un Z80 JP para la rutina del estndar RIGHTC es colocado en MINUPD/MAXUPD (vea debajo) para el uso por el dibujo mainloop, entonces de otra manera un JP para la rutina del estndar LEFTC es colocado all. La tercera limitacin se subsana comparando la diferencia de coordenada de la X para la diferencia de coordenada de la Y antes de sacando a determinar el empinamiento de la cuesta. Si X2-X1 es ms pequeo que Y2-Y1, entonces la cuesta de la lnea est menos de cuarenta y cinco grados de lo horizontal. El mtodo simple y exteriorizado citado anteriormente para LNEA (0,0) - (10,4) no trabajar para cuestas ms gran que cuarenta y cinco grados como la tasa mxima de descenso sea lograda cuando un paso descendente es tomado por cada paso horizontal. Surtir efecto sin embargo si las instrucciones de paso estn permutadas. As la LNEA (0,0) - (4,10) precisa un paso del rightward para cada dos y unos pasos medio descendentes. MINUPD cree que un Z80 JP para la rutina "normal" del estndar de direccin de paso para el mainloop del dibujo y MAXUPD le haga a un JP cumplir la "cuesta" rutina del estndar de direccin de paso. Pues ngulos poco hondo MINUPD lega vector para DOWNC y MAXUPD para LEFTC o RIGHTC. Para ngulos de la pendiente MINUPD lega vector para LEFTC o RIGHTC y MAXUPD para DOWNC. Pues la pendiente pesca con caa el mueble mostrador aprecia tambin debe ser intercambiado, la diferencia de la X ahora debe agregarse para el mueble mostrador y la Y que la diferencia us como el acabse del mueble mostrador. El variable MINDEL y MAXDEL son usados por el mainloop del dibujo para mantener estos valores del mueble mostrador, MINDEL los sostiene mientras ms pequeo diferencia del punto de fin y MAXDEL mayor. Un punto interesante es que el mueble mostrador remisivo, mantenido en CTR en el citado anteriormente programa y en par de registro Delaware en el ROM, es precargado medio la diferencia ms grande del punto de fin en vez de ser colocado para poner en el cero. Esto tiene como consecuencia dividiendo la primera "escalera" en la lnea en dos captulos, uno al principio de la lnea y uno en su fin, y mejorando la apariencia de line's. La direccin ... 59B4H Estos grficos que la rutina intercambia los contenidos de mismo del par de registro Delaware mordieron a la derecha. La direccin ... 59BCH Esta rutina genera una "llamada ilegal de funcin" error (475AH) si la pantalla no est de Modo Graphics o el Multicolor Mode.
- 147 5. EL INTRPRETE DE BASIC ROM La direccin ... 59C5H ste es la "pintura" manipulador de declaracin. El par de coordenada de puesta en marcha es evaluado (579CH), el color de tinta colocado (584DH) y la demarcacin optativa que el color el operand evalu (521CH) y coloc en BDRATR. El par de coordenada de puesta en marcha es comprobado para asegurar que est dentro de la pantalla (5E91H) y est hecho la direccin fsica del pixel en uso en estos momentos por la rutina del estndar MAPXYC. La distancia para
la demarcacin de la derecha est entonces medida y, si fuera pone en el cero, el manipulador termina (5ADCH). De otra manera la distancia para la demarcacin de la izquierda est medida (5AEDH) y la suma de lo dos colocado en par de registro Delaware como la anchura de la zona. La corriente dos veces a la que la colocacin es entonces apilada (5ACEH), primero con una bandera de terminacin (00H) y luego con una bandera cada (40H) de direccin. El control luego se traslada para la pintura mainloop (5A26H) con una bandera levantada (C0H) de direccin en B de registro. La direccin ... 5A26H ste es el mainloop de pintura. La zona que la anchura es sostenida en par de registro Delaware, la direccin de pintura, arriba o abajo de, en B de registro y la direccin fsica del pixel en uso en estos momentos est eso del pixel adyacente para el lmite de la izquierda. Un paso vertical es llevado a la siguiente lnea, por el TUPC o las rutinas del estndar TDOWNC, y la distancia a la derecha dan lmite medido (5ADCH). La distancia para la demarcacin de la izquierda est entonces medidas y la lnea entre los confines llenado adentro (5AEDH). Si ningn cambio es encontrado en calidad de ya sea el control de demarcacin transfiere para el principio del mainloop mantener pintura en la misma direccin. Si un cambio es encontrado, entonces una inflexin ha ocurrido y la accin apropiada debe ser tomada. Hay cuatro tipos de incursive de inflexin, LH o RH, dnde los movimientos pertinentes de demarcacin hacia dentro, y LH o RH digresivo, donde se muda hacia afuera. Un ejemplo de cada tipo es exteriorizado debajo con zonas numeradas indicando la orden de pintura durante el movimiento ascendente. Una zona secundaria es mostrada dentro de cada regin del inflective para la plenitud: +- + 3 3 +- + 2 3 + 3 2 + --- + + - + + +--- + + - + + - + --- + 2 2 +- + 1 1 + 1 1 +---------- + + ---------- + + - + LH Incursion RH Incursion LH Excursion RH Excursion Figura 45: La demarcacin Inflections
Una excursin LH ha ocurrido cuando la distancia para la demarcacin de la izquierda es poco cero, una excursin RH ha ocurrido cuando lo - 148 5. EL INTRPRETE DE BASIC ROM La anchura coetnea de la zona es mayor que eso de la lnea previa. A menos que la excursin est menos de dos pixels, en cuyo caso ser ignorada, que la colocacin coetnea (la raz dej de zona 3 en figura 45) sea apilada (5AC2H), la pintura que la direccin puso al revs y la pintura se reanuda en la izquierda mxima de la regin digresiva. Una incursin RH ha ocurrido cuando la anchura coetnea de la zona es ms pequea que eso de la lnea previa. Si la incursin es total, entonces esto es la anchura coetnea de la zona es cero, una calle sin salida ha sido alcanzada y la ltima colocacin y la direccin son a las que se hizo estallar (5AIFH) y la pintura se reanuda en ese momento. De otra manera la colocacin
coetnea y la direccin son apiladas (5AC2H) y la pintura se reanuda en la izquierda ms bajo de la regin del incursive. Un LH que la incursin est con la que se trat automticamente durante la bsqueda para la demarcacin de la derecha y no precisa accin explcita por el mainloop de pintura. La direccin ... 5AC2H Esta rutina es usada por la "pintura" manipulador de declaracin para ahorrar la colocacin coetnea de pintura y la direccin en la pila Z80. El bloque de parmetro de seis bytes est hecho de lo siguiente: 2 bytes ... contenidos Coetneos de CLOC 1 byte ... la direccin Coetnea 1 byte ... contenidos Coetneos de CMASK 2 bytes ... la anchura de la zona Current Despus de que los parmetros hayan sido apilados un cheque est hecho ese existe suficiente (625EH) de silencio de la espacio pila. La direccin ... 5ADCH Esta rutina es usada por la "pintura" manipulador de declaracin para hallar la demarcacin de la derecha. La anchura de la zona de la lnea previa es pasada a la rutina del estndar SCANR en par de registro Delaware, sta determina el nmero mximo de pixels de color de demarcacin que inicialmente puede ser pasadas por alto. El remanente devuelto de la cuenta de salto es colocado en SKPCNT y el nmero de poco demarcacin que los pixels de color negaron en MOVCNT. La direccin ... 5AEDH Esta rutina es usada por la "pintura" manipulador de declaracin para hallar la demarcacin de la izquierda. El punto de fin de la bsqueda de demarcacin de la derecha es por ahora ahorrado y el punto de partida tomado de CSAVEA y CSAVEM y hecho la direccin fsica del pixel en uso en estos momentos. El lmite de la izquierda est luego ubicado por la rutina del estndar SCANL, lo cual tambin rellena la zona entera, y el cabo de la derecha punto se recuper y coloc en CSAVEA y CSAVEM.
- 149 5. EL INTRPRETE DE BASIC ROM La direccin ... 5B0BH Esta rutina es usada por el "crculo" manipulador de declaracin para negar los contenidos de par de registro Delaware. La direccin ... 5B11H ste es el "crculo" manipulador de declaracin. Despus de evaluar el par de coordenada del centro (579CH) el radio es evaluado (520FH), multiplicado (325CH) por el PECADO (PI/4) y est posado en CNPNTS. El color de tinta est colocado (584DH), el principio que el ngulo evalu (5D17H) y coloc en CSTCNT y que el ngulo de fin evalu (5D17H) y coloc en CENCNT. Si el ngulo de fin es ms pequeo que el ngulo de principio los dos valores es intercambiado y
CPLOTF es hecho poco cero. La proporcin dimensional es evaluada (4C64H) y, si es mayor que una, su recproco es tomado (3267H) y CSCLXY es poco cero hecho para indicar un aplastamiento del axis de la X. La proporcin dimensional es multiplicada (325CH) a las 256, convertido para un entero (2F8AH) y colocado en el ASPECTO como un solo byte el fragmento binario. Pares de registro HL y Delaware estn listos para la colocacin de puesta en marcha en el permetro del crculo (X=RADIUS, Y = 0) y el control cae en el mainloop del crculo. La direccin ... 5BBDH ste es el mainloop del crculo. Por el grado alto de simetra en crculos hay slo que computar las coordenadas del arco de cero para cuarenta y cinco grados. Los otros siete segmentos son producidos por rotacin y reflexin de estas proposiciones. La ecuacin del parametric para un crculo de la unidad, con T el ngulo de cero para PI/4, es: X=CO (T) Y=SIN (T) Dirija computacin usando esta ecuacin, o la forma funcional correspondiente X=SQR (1-Y ^ 2), es demasiado lento, en lugar de eso la primera derivada es usada: El dx ---- = - Y/X El dy Como quiera que la colocacin de puesta en marcha es conocida (X=RADIUS, Y = 0), el cambio de coordenada de la X pues cada cambio de coordenada de la Y de la unidad puede ser computado usando la derivada. Adems, porque la resolucin de grficos est limitada para un pixel, hay slo que saber cundo cumple la suma de los cambios de coordenada de la X unidad y luego para el decremento la coordenada de la X. Por consiguiente: La X De Decremento Cundo (Y1/X) + (Y2/X) + (Y3/X) + ... = > 1 Por consiguiente el decremento cuando (Y1 Y2 Y3 + ...) /X = > 1 Por consiguiente el decremento cuando Y1 Y2 Y3 + ... = > X Todo lo que est obligado a identificar un cambio de coordenada de la X es totalizar los valores de coordenada de la Y de cada paso hasta la X - 150 5. EL INTRPRETE DE BASIC ROM El valor coordinado es excedido. El mainloop del crculo sostiene la X coordinada en par de registro HL, la Y coordinada en par de registro Delaware y el total corredor en CRCSUM. Un programa equivalente de BASIC para un crculo de radio arbitrario 160 pixels es: 10 OCULTAN 2 20 X = 160:Y = 0:CRCSUM = 0 30 PSET (X, 191-Y) 40 CRCSUM=CRCSUM+Y:Y=Y + 1 50 SI CRCSUM<X LUEGO 30 60 CRCSUM CRCSUM-X:X X-1 70 SI X>Y LUEGO 30 80 DAN VUELTAS (0,191), 155 90 GOTO 90
Los pares de coordenada generados por el mainloop son esos de un crculo "virtual", tales tareas como la reflexin axial, el tropel elptico y la traduccin del centro son manipulados en un nivel inferior (5C06H). La direccin ... 5C06H Esta rutina se usa para por el mainloop del crculo para convertir un par coordinado, en pares de registro HL y Delaware, en ocho proposiciones simtricas en la pantalla. La coordenada de la Y es inicialmente negada (5B0BH), reflectante que ella acerca del axis de la X, y las primeras cuatro proposiciones produjeron por rotaciones en el sentido de las manecillas del reloj sucesivas a travs de noventa grados (5C48H). La coordenada de la Y es entonces negada otra vez (5B0BH) y unas adicionalmente cuatro proposiciones producidas (5C48H). La rotacin en el sentido de las manecillas del reloj es realizada intercambiando la X y Y se coordina y negando la coordenada nueva de la Y, as un punto (40,10) vendra bien (10, - 40). Asumiendo una proporcin dimensional de 0.5, por ejemplo, la secuencia completa de ocho proposiciones por consiguiente sera: (1) X, - Y * 0.5 (2) - Y, - X * 0.5 (3) - X, Y * 0.5 (4) Y, X * 0.5 (5) Y, - X * 0.5 (6) - X, - Y * 0.5 (7) Y, X * 0.5 (8) X, Y * 0.5 Puede verse de lo citado anteriormente ese, ignorando el signo de las coordenadas por el momento, hay slo cuatro condiciones complejas. Por consiguiente, en vez de realizar la multiplicacin de proporcin dimensional (5CEBH) relativamente lenta para cada punto, la condiciones X * 0.5 y Y * 0.5 pueden prepararse por adelantado y la secuencia completa generada por ah intercambiando y negar las cuatro condiciones. Con la proporcin dimensional exteriorizada por encima de las condiciones iniciales es establecido a fin de que registra par HL=X, registra par Delaware = - Y * 0.5, CXOFF=Y y CYOFF=X * 0.5 y proposiciones sucesivas se producen por ah lo - 151 5. EL INTRPRETE DE BASIC ROM Las operaciones: (1) Exchange HL y CXOFF, niegan a HL. (2) Exchange Delaware y CYOFF, niegan Delaware. Adentro iguale con la computacin de cada coordenada del crculo que el nmero de proposiciones requiri alcanzar el principio del segmento conteniendo el punto es guardado en CPCNT8. ste inicialmente ser cero y aumentar por 2 RADIUS*SIN (PI/4) como cada uno que rotacin de noventa grados est hecha. Como cada uno de las ocho proposiciones se producen su valor de coordenada de la Y se agrega para los contenidos de CPCNT8 y comparado para el principio y el fin ngulos para determinar el curso de la accin apropiado. Si el punto est entre los dos ngulos y CPLOTF es cero, o si est fuera del Anglos y CPLOTF es poco cero, entonces las coordenadas estn aadido para las coordenadas del centro del crculo (5CDCH) y el punto determinado por el SCALXY, MAPXYC y rutinas del estndar SETC. Si el punto es igual ya sea de los dos ngulos, y el bit asociado es incrustado en CLINEF, entonces las coordenadas estn aadidas para las coordenadas del centro del crculo (5CDCH) y una lnea llevada al centro (593CH). Si ninguna de estas condiciones son aplicables ninguna accin est ocupada aparte de para proceder hacia el siguiente punto. La direccin ... 5CEBH
Esta rutina multiplica el valor coordinado abastecido en par de registro Delaware por la proporcin dimensional contenida en el ASPECTO, el resultado es devuelto en par de registro Delaware. El cambio binario estndar y se aade que el mtodo es usado pero la operacin es realizada como dos solas multiplicaciones de byte para evitar problemas de excedente. La direccin ... 5D17H Esta rutina es usada por el "crculo" manipulador de declaracin para convertir un operand del ngulo a que la forma requiri por el crculo mainloop, el resultado es devuelto en par de registro Delaware. Mientras el mtodo usado es bsicamente atinado, y elimina una computacin trigonomtrica por ngulo, los resultados producidos es inexacta. Esto es demostrado por el siguiente ejemplo que saca una lnea para el verdadero punto de treinta grados en un permetro de circle's: 10 OCULTAN 2 20 LA PI = 4 * ATN (1) 30 DAN VUELTAS (100,100), 80, PI/6 40 REVISTEN (100,100) - (100+80 * Colorados (PI/6), 100-80 * PEQUE (PI/6)) 50 GOTO 50 El resultado que la rutina debera producir es el nmero de proposiciones que deben ser producidas por el mainloop del crculo antes de que el ngulo requerido sea alcanzado. Esto puede ser computado por primero notar que habr INT (el NGULO / (PI/4)) segmentos de cuarenta y cinco grados antes del segmento conteniendo el ngulo requerido. Adems cada cuarenta y cinco segmento contendr proposiciones RADIUS*SIN (PI/4) tan - 152 5. EL INTRPRETE DE BASIC ROM ste es el valor de la coordenada de la Y que termina. Por eso el nmero de proposiciones requiri cumplir el principio del segmento conteniendo el ngulo es el producto de estos dos nmeros. La cuenta total se produce aadiendo esta figura para el nmero de proposiciones requeridas a cubrir cualquier ngulo restante dentro del segmento final, que es RADIUS*SIN (PERMANECIENDO NGULO) apunta. Desafortunadamente la rutina computa el nmero de proposiciones dentro de un segmento por la aproximacin lineal del tamao total del segmento en la suposicin equivocada que las proposiciones sucesivas subtenden ngulos iguales. As en el citado anteriormente ejemplo el punto que la cuenta comput para el ngulo sea 30/45 * (80*0.707107) = 37 en lugar del valor correcto de cuarenta. El error producido por la rutina est por consiguiente en un mximum en el centro de cada segmento de cuarenta y cinco grados y adelgaza poner en el cero al final apunta. La direccin ... 5D6EH ste es el "empate" manipulador de declaracin. El par de registro Delaware est colocado para apuntar hacia la mesa de orden en 5D83H y las transferencias de control para el analizador gramatical de lenguaje de macro (566CH). La direccin ... 5D83H Esta mesa contiene las cartas vlidas de orden y las direcciones asociadas para el "empate" rdenes de declaracin. Esas rdenes que las tomas un parmetro, y consecuentemente tienen, mordieron 7 el crculo en la mesa, son exteriorizados con un asterisco:
CMD PARA U * 5DB1H D * 5DB4H L * 5DB9H * el 5DBCH de interrogacin M 5DD8H E * 5DCAH F * 5DC6H G * 5DD1H H * 5DC3H Un * 5E4EH B 5E46H N 5E42H X 5782H C * 5E87H S * 5E59H La direccin ... 5DB1H Esto es el "empate" manipulador de orden de declaracin "U". La operacin de la "D", "L", "interrogacin", "E", "F", "G" y "H" rdenes es muy similar as es que ninguna descripcin separada de sus manipuladores es dada. El parmetro numrico optativo es suministrado por el analizador gramatical de lenguaje de macro en par de registro Delaware. Este parmetro inicial es - 153 5. EL INTRPRETE DE BASIC ROM
Modificado por un manipulador dado en un offset horizontal en registre par BC y un offset vertical en par de registro Delaware. Por ejemplo si hacia la izquierda o el movimiento ascendente es precisado, entonces el parmetro es negado (5B0BH), si el movimiento diagonal es precisado que el parmetro es multiplicado por dos a fin de que igual vertical horizontal y offsets se produce. Una vez que los offsets han sido preparado las transferencias de control para la rutina de dibujo lineal (5DFFH). La direccin ... 5DD8H Esto es el "empate" manipulador de orden de declaracin "M". El carcter siguiendo la carta de orden es examinado luego los dos parmetros cobrados de la cuerda de orden (5719H). Si el carcter inicial es o "-" los parmetros son considerados como offsets y son modificados a escala (5E66H), alternados a travs sucesivos pasos de noventa grados tan determinados por DRWANG y luego sumados a las coordenadas coetneas (5CDCH) de grficos para determinar la terminacin punto. Si DRWFLG exterioriza a la "B" modo para estar inactivo que una lnea es luego sacada de (5CCDH) las coordenadas coetneas de grficos para la terminacin el punto. Si DRWFLG exterioriza a la "N" modo para estar inactivo, entonces las coordenadas de terminacin son colocadas en GRPACX y GRPACY para ir bien con los grficos actuales nuevos coordina. Finalmente DRWFLG es puesto en el cero, quitar las ganas a la "B" y "N" modos, y el manipulador termina. La direccin ... 5E42H Esto es el "empate" manipulador de orden de declaracin "N", DRWFLG est simplemente listo a 40H.
La direccin ... 5E46H Esto es el "empate" manipulador de orden de declaracin "B", DRWFLG est simplemente listo a 80H. La direccin ... 5E4EH ste es la "A" de declaracin de "empate" manipulador de orden. El parmetro es comprobado para la magnitud y est posado en DRWANG. La direccin ... 5E59H Esto es el "empate" manipulador de orden de declaracin "S". El parmetro es comprobado para la magnitud y est posado en DRWSCL. La direccin ... 5E66H Esta rutina es usada por el "empate" declaracin "U", "D", "L", "interrogacin", "E", "F", "G", "H" y "M" (en el modo de offset) manipuladores de orden para modificar a escala el offset abastecido en par de registro Delaware por los contenidos de DRWSCL. A menos que DRWSCL es cero, en cuyo caso la rutina simplemente termina, el offset es multiplicado usando repetida adicin y luego dividido a las cuatro (59B4H). Para eliminar modificar a escala un "S0" o "S4" orden debera ser usado.
La direccin ... 5E87H Esto es el "empate" manipulador de orden de declaracin "C". El parmetro es colocado en ATRBYT por la rutina del estndar SETATR. No hay cheque en el MSB del parmetro as es que los valores ilegales como "C265" sern aceptados sin un mensaje de error. La direccin ... 5E91H Esta rutina es usada por la "pintura" manipulador de declaracin a comprobar, por la rutina del estndar SCALXY, que las coordenadas en pares de registro BC y Delaware estn dentro de la pantalla. En caso de que no una "llamada ilegal de funcin" error es generada (475AH). La direccin ... 5E9FH ste es el manipulador "dbil" de declaracin. Un regreso se establece mecanismo arriba para 5E9AH, tan ese Arrays mltiple puede ser procesado, DIMFLG est hecho que el poco cero y las cadas de control en el Variable investigan rutina. La direccin ... 5EA4H sta es la rutina Variable de bsqueda. En las proposiciones del par de registro de entrada HL para el primer carcter del nombre Variable en el texto de programa. En registro de la salida las proposiciones del par HL para el carcter siguiendo el nombre y el par de registro Delaware para el primer byte de los contenidos Variables en el Storage Variable Area. El primer carcter del nombre es tomado del texto de programa, comprobado para asegurar que es caja alta alfabtica
(64A7H) y colocada en la C de registro. El carcter segundo optativo, con un valor predeterminado de cero, es colocado en registro B, este carcter puede ser alfabtico o numrico. Cualquier fomente carcteres alfanumricos son entonces simplemente saltados encima. Si un carcter de sufijo de tipo ("el %", "$", "!" o" # ") sigue el nombre ste es convertido al tipo correspondiente cdigo (2, 3, 4 o 8) y est posado en VALTYP. De otra manera el tipo predeterminado de Variable es tomado de DEFTBL usando la primera carta del nombre para hallar la entrada apropiada. SUBFLG es entonces a cuadros para determinar cmo siguiendo cualquier subndice del parenthesized el nombre debera ser tratado. Esta bandera es normalmente cero pero es modificada por el "ERASE" (01H), "FOR" (64H), "FN" (80H) o "DEF FN" (80H) manipuladores de declaracin para obtener a la fuerza un curso de la accin particular. En el "ERASE" caso el control transfiere directamente para la rutina de bsqueda Array (5FE8H), ninguna necesidad del subndice del parenthesized est presente. En el "FOR", "FN" y "DEF FN" casos monitorean transferencias directamente para la rutina Variable simple (5F08H) de bsqueda, ningn cheque est hecho para un subndice del parenthesized. Dado que la situacin es normal el texto de programa es comprobado para los personajes "(" o . Si uno u otro es transferencias presentes de control para la rutina de bsqueda Array (5FBAH), las cadas diferentes de control en el Variable simplista investigan rutina.
- 155 5. EL INTRPRETE DE BASIC ROM La direccin ... 5F08H sta es la rutina Variable simple de bsqueda. Hay cuatro tipos del simplista Variable que cada uno compuso de un encabezado siguieron por los contenidos Variables. El primer byte del encabezado contiene el cdigo de tipo y los siguientes dos bytes el nombre Variable. Los contenidos del Variable sern una de las formas de tres estndares de numrico o, para el tipo de la cuerda, el largo y direccin de la cuerda. Cada uno de los cuatro tipos son exteriorizados debajo: + 02H "A B" LSBMSB + El entero + 03H "A B" LENLSBMSB + La cuerda + 04H "A B" EEDDDDDD + Singularice a Precision + 08H "A B" EEDDDDDDDDDDDDDD + Duplique Precisin Figura 46: Variables simplista NOFUNS es primero a cuadros para determinar si un usuario defini funcin est actualmente
siendo evaluada. Si as es que la bsqueda es efectuada en los contenidos de PARM1 ante todo, slo si esto yerra voluntad ella mdese encima del Storage Variable principal Area. Un mtodo lineal de bsqueda es usado, los dos personajes de nombre y el byte de tipo de cada Variable en el rea de almacenamiento son comparados para los personajes remisivos y el tipo hasta un encuentro es encontrado o el fin del rea de almacenamiento es cumplido. Si la bsqueda tiene xito la rutina termina con la direccin del primer byte de los contenidos Variables en par de registro Delaware. Si la bsqueda est sin xito, entonces el Array Storage Area es movido arriba y el Variable nuevo se agrega hasta el fin de los existentes e inicializado para poner en el cero. Hay dos excepciones para esta creacin automtica de un Variable nuevo. Si la bsqueda est siendo ejecutada por el "VARPTR" funcin, y esto est resuelto examinando el regreso, entonces la direccin, ningn Variable ser creada. En lugar de eso la rutina termina con par de registro Delaware puesto a cero (5F61H) de causar una subsiguiente "llamada ilegal de funcin" error. La segunda excepcin ocurre cuando la bsqueda est siendo ejecutada por el Evaluatodor Factor, esto es cuando la Variable es recin declarado dentro de una expresin. En este caso DAC es puesto en el cero para tipos numricos, y est cargado de la direccin de un descriptor falso de largo de cero para un tipo de la cuerda, as devolviendo un resultado de cero (5FA7H). Estos - 156 5. EL INTRPRETE DE BASIC ROM Las acciones son diseadas para impedir el Evaluatodor Expression creando a un Variable nuevo ("VARPTR") sea la nica funcin para tomar una discusin Variable directamente en vez de por una expresin y as tambin precise proteccin separada). Si sta no estuviera as bien asignacin para un Array, por el manipulador "dejado" de declaracin, no se lograra como cualquier simplista Variable creado durante la evaluacin de expresin cambiara la direccin de Array. La direccin ... 5FBAH sta es la rutina de bsqueda Array. Hay cuatro tipos de Array cada uno serenos de un encabezado y un nmero de elementos. El primer byte del encabezado contiene el cdigo de tipo, los siguientes dos bytes el nombre Array y lo siguiente dos el offset para el principio del siguiente Array. Esto es seguido por un solo byte conteniendo la dimensionalidad del Array y la lista de la cuenta del elemento. Cada uno que cuenta del elemento de dos bytes contiene el nmero mximo de elementos por la dimensin. Estos se guardan en orden inverso con lo primer correspondiente al ltimo subndice. Los contenidos de cada elemento Array son idnticos para los contenidos del Variable simplista correspondiente. El entero debajo del que el % Array AB (3,4) es mostrado con cada elemento identific por sus subndices, la memoria alta est hacia la parte superior de la pgina: + (0,4) (1,4) (2,4) (3,4) (0,3) (1,3) (2,3) (3,3) (0,2) (1,2) (2,2) (3,2) (0,1) (1,1) (2,1) (3,1) (0,0) (1,0) (2,0) (3,0) + + Imprima En Offset Cuenta Oscura De La Cuenta 02H "A B" 2DH 00H 02H 05H 00H 04H 00H + Figura 47: El entero Array
Cada subndice es evaluado, convertido para un entero (4755H) y empujado encima de la pila Z80 hasta que un parntesis de cierre es encontrado, no necesita hacer juego con lo inaugural. Una bsqueda lineal es luego efectuada en el Array Storage Area para un encuentro con los dos personajes de nombre y el tipo. Si la bsqueda tiene xito DIMFLG es al que se dio jaque y un "conjunto imponente Redimensioned" error generado (405EH) si muestra una declaracin "oscura" para ser activo. A men os que un "ERASE" declaracin es activo, en cuyo caso la rutina termina con par de registro BC apuntando hacia el principio del Array (3297H), la dimensionalidad del Array es entonces a cuadros en contra de la cuenta escrita debaja de una letra y un error "escrito debajo de una letra y fuera del alcance" generado si desencajan. Asumir que estas pruebas son pas las transferencias de control al punto de computacin de la direccin del elemento (607DH). Si la bsqueda es sin xito y un "ERASE" declaracin es activo, entonces una "llamada ilegal de funcin" error es generada (475AH) - 157 5. EL INTRPRETE DE BASIC ROM
De otra manera el Array nuevo se agrega hasta el fin del Array existente Storage Area. La inicializacin del Array nuevo procede almacenando los dos carcteres de nombre, el tipo cdigo y la dimensionalidad (la cuenta escrita debaja de una letra) seguida por la cuenta del elemento para cada dimensin. Si DIMFLG muestra una declaracin "oscura" para ser activo, entonces las cuentas del elemento son determinadas por los subndices. Si el Array est siendo creado por defecto, entonces con una declaracin como "uno (1,2,3) = 5" por ejemplo, un valor predeterminado de once es usado. Como cada cuenta del elemento es almacenada el tamao total del Array est acumulado en par de registro Delaware por multiplicaciones sucesivas (314AH) del elemento cuenta y el tamao del elemento (el tipo Array). Despus de que una comprobacin que esta cantidad de memoria sea STREND disponible (6267H) es aumentado el rea nuevo es puesto en el cero y el tamao Array es almacenado, adentro ligeramente modific forma, inmediatamente despus de que los dos nombren a los personajes. A menos que el Array est siendo creado por defecto, en cuyo caso la direccin del elemento debe ser computada, la rutina luego termina. ste es el punto de computacin de la direccin del elemento de la rutina de bsqueda Array. La posicin de un elemento particular dentro de un Array implica la multiplicacin (314AH) de subndices, cuentas del elemento y tamaos del elemento. Como hay una coleccin variada de formas que esto pudo estar hecho el mtodo real usado es ms conveniente ilustrado con un ejemplo. La posicin de elemento (1,2,3) en un 4*5*6 Array inicialmente sera computada como (((3*5) + 2) * 4) + 1. Esto est luego multiplicado por el tamao del elemento (el tipo) y aadido para la direccin bajo Array para obtener la direccin del elemento requerido. El mtodo de computacin es una forma optimizada que minimiza el nmero de pasos necesitados, es equivalentes para evaluar (3 * (4*5)) + (2*4) + (1). El elemento que la direccin es devuelta en par de registro Delaware. La direccin ... 60B1H sta es la "impresin USANDO" manipulador de declaracin. Controle transferencias aqu del manipulador "estampado" general de declaracin despus de que el dispositivo aplicable de salida haya sido establecido. En la terminacin el control devuelve para el punto "estampado" general (4AFFH) de la salida de declaracin para restaurar la salida de vdeo normal. La cuerda del formato es evaluada (4C65H) y la direccin y largo del cuerpo de la cuerda sacado del descriptor. El perro de muestra del texto de programa se salva luego por ahora. Cada carcter de la cuerda del formato es examinado hasta uno de los personajes posibles de la plantilla es encontrado. Si el carcter no debe estar en una plantilla, entonces es simplemente salida por la
rutina del estndar OUTDO. Una vez que el principio de una plantilla es encontrado esto es escudriado adelante hasta que un carcter de la poco plantilla es encontrado. El control luego pasa para la rutina numrica (6192H) de salida o la rutina de salida de la cuerda (6211H). En cualquier caso el puntero del texto de programa est recuperado para registrar par HL y el siguiente operand evaluado (4C64H). Para la salida numrica que la informacin gan de la plantilla escudrie es pasado a la rutina numrica (3426H) de conversin en A de registros, B y C y la cuerda resultante exhibida (6678H). Para
La salida de la cuerda la cuenta requerida de carcter es pasada al "LEFT$" manipulador de declaracin (6868H) en C de registro y la cuerda resultante exhibida (667BH). Pues o escribe a mquina de salida que el texto de programa y el formato atan con una cuerda es entonces examinado para determinar si hay cualquier ms personajes. Si ninguno de los operands existen, entonces el manipulador termina. Si la cuerda del formato ha estado agotada luego es vuelta a arrancar desde el principio (60BFH), otrora la tomografa contina de la colocacin coetnea para el siguiente operand (60f6H). La direccin ... 6250H Esta rutina es usada por el Interpreter Mainloop y el Variable investiga rutina para mover un bloque de memoria arriba. Un cheque est primero hecho para asegurar que suficiente memoria existe (6267H) y luego el bloque de memoria es movido. La fuente mxima a la direccin est suministrada en par de registro BC y el destino mximo dirigen la palabra a en par de registro HL. Copiarse se detiene cuando los contenidos de registro parean AC a igual que esos de registro parean Delaware. La direccin ... 625EH Esta rutina se usa para comprobar que suficiente memoria est disponible entre la parte superior del Array Storage Area y la base de la pila Z80. En registro de entrada la C contiene el nmero de palabras que la persona que llama requiere. Si esto estrechara la abertura para menos de doscientos bytes uno "por la memoria" el error es generada. La direccin ... 6286H ste es el manipulador "nuevo" de declaracin. TRCFLG, AUTFLG y PTRFLG son puestos en el cero y el enlace de fin de cero est posado al principio del Program Text Area. VARTAB est dispuesto a apuntar hacia el byte siguiendo las cadas de fin del enlace y de control en la rutina cristalina en la carrera. La direccin ... 629AH Esta rutina es usada por los manipuladores "nuevos", "andados" y "cristalinos" de declaracin para inicializar las variables Interpreter. Todo interrumpe es aclarado (636EH) y los tipos predeterminados Variable en DEFTBL se disponen a duplicar precisin. RNDX es vuelto a arrancar (2C24H) y ONEFLG, ONELIN y OLDTXT son puestos en el cero. MEMSIZ es emulado para FRETOP para descongestionar al String Storage Area y DATPTR determinado para el principio del Program Text Area (63C9H). Los contenidos de VARTAB son emulados en ARYTAB y STREND, para descongestionar a cualquier Variables, todo lo yo / que la O modera es cerrado (6C1CH) y NLONLY es vuelto a arrancar. SAVSTK y el Z80 SP son vueltos a arrancar de STKTOP y TEMPPT es vuelto a arrancar para el principio de TEMPST para aclarar cualquier
descriptores de la cuerda. La impresora es cerrada (7304H) y salida recuperada para la pantalla (4AFFH). Finalmente PRMLEN, NOFUNS, PRMLN2, FUNACT, PRMSTK y SUBFLG son puestos en el cero y la rutina termina.
La direccin ... 631BH Esta rutina es usada por el "dispositivo EN" manipuladores de declaracin a posibilitar uno interrumpe fuente, la direccin de byte de . estado TRPTBI del dispositivo pertinente es suministrada en par de registro HL. Interrumpe es posibilitado ajustando bit 0 del byte de estado. Los aicos 1 y 2 son entonces examinados y, si el dispositivo ha estado bloqueado y uno interrumpa ha ocurrido, ONGSBF es incrementado (634FH) a fin de que el Runloop lo procesar al final de la declaracin. Finalmente el bit 1 del byte de estado es vuelto a arrancar para lanzar al mercado cualquier condicin existente de alto. La direccin ... 632EH Esta rutina est usada por el "dispositivo FUERA DE" manipuladores de declaracin para lisiar uno interrumpe fuente, la direccin de byte de estado TRPTBL del dispositivo pertinente es suministrada en par de registro HL. Los aicos 0 y 2 son examinados para determinar si uno interrumpa ha ocurrido desde el fin de la ltima declaracin, si as es que ONGSBF es decremented (6362H) para advertir al Runloop de recogerlo. El byte de estado es entonces puesto en el cero. La direccin ... 6331H Esta rutina es usada por el "alto del DISPOSITIVO" manipuladores de declaracin a suspender el procesamiento de interrumpe de uno interrumpe fuente, la direccin de byte de estado TRPTBL del dispositivo pertinente es suministrada en par de registro HL. Los aicos 0 y 2 son examinados para determinar si uno interrumpa ha ocurrido desde el fin de la ltima declaracin, si as es que ONGSBF es decremented (6362H) para advertir al Runloop de recogerlo. El bit 1 del byte de estado est luego colocado. La direccin ... 633EH Esta rutina es usada por el "regreso" manipulador de declaracin para lanzar al mercado la condicin de alto temporal impuesta durante interrumpen subrutinas propulsadas de BASIC, la direccin del byte pertinente de estado device's TRPTBL es suministrada en par de registro HL. Los aicos 0, y 2 son examinados para determinar si uno bloqueado interrumpa ha ocurrido desde que la subrutina fue primero activado. Si as es que ONGSBF es incrementado (634FH) a fin de que el Runloop lo recoger al final de la declaracin. El bit 1 del byte de estado es entonces vuelto a arrancar. Debera ser notado que cualquier "alto del DISPOSITIVO" Declaracin dentro de uno interrumpe subrutina propulsada por consiguiente ser ineficaz. La direccin ... 6358H Esta rutina es usada por el Runloop interrumpe procesador (6389H) para aclarar uno interrumpa antes de accionar la subrutina de BASIC, la direccin de byte de estado TRPTBL del
dispositivo pertinente es suministrada en par de registro HL. ONGSBF es decremented y bit 2 del byte de estado es vuelto a arrancar.
La direccin ... 636EH Esta rutina es usada por la rutina cristalina en la carrera (629AH) para aclarar todo interrumpe. Los setenta y ocho bytes de TRPTBL y los diez bytes de FNKFLG son puestos en el cero. La direccin ... 6389H ste es el Runloop interrumpe procesador. ONEFLG es primero examinado para determinar si una condicin de error actualmente existe. Si as es que la rutina termina, entonces no interrumpe ser procesado hasta los claros de error. CURLIN es entonces examinado y, si el Interpreter est directo modo, la rutina termina. Asumir todo es adecuadamente una bsqueda est hecha de los veintiseis bytes de estado en TRPTBL para encontrar la primera parte activa interrumpa. Noto que los dispositivos cerca del principio de la mesa consecuentemente tendrn una prioridad superior que esos ms bajo abajo. Cuando el primer byte activo de estado es encontrado, esto es mismo con aicos 0 y 2 se sedimentan, la direccin asociada es tomada de TRPTBL y est posado en par de registro Delaware. Lo interrumpe es entonces aclarado (6358H) y el dispositivo detenido (6331H) antes del control se traslada para el "GOSUB" manipulador (47CFH). La direccin ... 63C9H Esto es lo "restaura" manipulador de declaracin. Si ningn operand de nmero de la lnea existe, entonces DATPTR est listo para el principio del Program Storage Area. De otra manera el operand es coleccionado (4769H), el texto de programa registrado para encontrar la lnea pertinente (4295H) y su direccin colocada en DATPTR. La direccin ... 63E3H ste es el "alto" manipulador de declaracin. Si el ms texto existe en las transferencias de control de declaracin para el "alto ON/OFF/STOP" manipulador de declaracin (77A5H). La A diferente de registro est colocada para 01H y el control cae en el "fin" manipulador de declaracin. La direccin ... 63EAH ste es el "fin" manipulador de declaracin. Es tambin usado, con proposiciones discrepantes de entrada, por el "alto" declaracin y para CTRL-STOP y el fin de terminacin de programa del texto. ONEFLG es primero puesto en el cero y luego, para el "fin" declaracin slo, todo yo los amortiguadores de la / O estoy cerrado (6C1CH). La colocacin coetnea del texto de programa es colocada en SAVTXT y OLDTXT y el nmero actual de la lnea en OLDLIN para el uso por cualquier subsiguiente "CONT" declaracin. La impresora es cerrada (7304H), un CR LF emiti para la pantalla (7323H) y el par de registro que HL se dispuso a apuntar para el "Break" mensaje en 3FDCH. Para el "fin" declaracin y fin de control de casos del texto luego transfiere para el punto Mainloop "Oklahoma" (411EH). Para el caso CTRL-STOP las transferencias de control hasta el fin del manipulador de error (40FDH) para exteriorizar el mensaje "Break".
La direccin ... 6424H ste es el "CONT" manipulador de declaracin. A menos que son cero, en cuyo caso uno "no puede mantener" error es generado, los contenidos de OLDTXT son colocados en par de registro HL y esos de OLDLIN en CURLIN. El control luego regresa al Runloop para ejecutar en la colocacin vieja del texto de programa. Un programa no puede ser mantenido despus de que CTRL-STOP haya estado acostumbrado a separarse de DENTRO DE una declaracin, por la rutina del estndar CKCNTC, en vez de entre declaraciones. La direccin ... 6438H ste es el "TRON" manipulador de declaracin, TRCFLG es poco cero simplemente hecho. La direccin ... 6439H ste es el "TROFF" manipulador de declaracin, TRCFLG es cero simplemente hecho. La direccin ... 643EH ste es el "trueque" manipulador de declaracin. El primer Variable est ubicado (5EA4H) y sus contenidos copiados para SWPTMP. La posicin de este Variable y del fin del Storage Variable Area es por ahora ahorrada. El segundo Variable est luego ubicado (5EA4H) y su tipo se compar con eso de la primera parte. Si los tipos desencajan un "bodorrio de tipo" error es generado (406DH). El fin coetneo del Storage Variable Area es entonces comparado con el fin viejo y una "llamada de funcin ilegal" error generado (475AH) si difieren. Finalmente los contenidos del segundo Variable son emulados para la posicin del primer Variable (2EF3H) y los contenidos de SWPTMP para la posicin del segundo Variable (2EF3H). Los cheques realizados por el manipulador quieren decir que el segundo Variable, si es simple y no un Array, siempre debe estar de existencia antes de que un "trueque" Declaracin sea encontrado o un error ser generado. La razn para esto es eso, suponiendo que el primer Variable fue un Array, luego la creacin de un segundo (simple) Variable movera al Array Storage Area arriba invalidando su posicin ahorrada. Note ese el caso perfectamente legal de un Variable primero simplista y un Variable recin segundo simplista creado es tambin rechazado. La direccin ... 6477H ste es el "ERASE" manipulador de declaracin. SUBFLG est primero listo a 01H, a controlar la rutina Variable de bsqueda, y el Array localizado (5EA4H). Todo el siguiente Arrays est emocionado que el descendente y STREND se sedimentan para su valor nuevo, inferior. El texto de programa es entonces a cuadros y, si una coma siguiera, controla transferencias de regreso al principio del manipulador.
La direccin ... 64A7H Estos cheques de rutina ya sea el carcter a cuya direccin estn suministrados en par de registro HL son caja alta alfabtica, si as es que devuelve Flag Carolina Del Norte. La direccin ... 64AFH ste es el manipulador "cristalino" de declaracin. Si ninguno de los operands son presente transferencias de control para la rutina cristalina en la carrera (62A1H) para quitar a todo Variables actual. De otra manera el operand de espacio de la cuerda es evaluado (4756H) seguido por la parte superior optativa de memoria operand (542FH). La parte superior de valor de memoria es comprobada y una "llamada de funcin ilegal" error generado (475AH) si est menos de 8000H o ms gran que F380H. El espacio requerido por ah lo yo los amortiguadores de la / O (267 bytes cada uno) y la String Storage Area es sustrado desde lo alto de valor de memoria y uno "por la memoria" que el error generaron (6275H) si que hay menos de faltante de 160 bytes para la base del Storage Variable Area. Asumir todo es adecuadamente HIMEM, MEMSIZ y STKTOP son determinados para sus valores nuevos y la reanudacin restante de punteros de almacenamiento por la rutina cristalina en la carrera (62A1H). Lo que yo el almacenamiento del amortiguador de la / O soy reubicado (7E6BH) y que el manipulador termina. Desafortunadamente la computacin de MEMSIZ y STKTOP, cundo una parte superior nueva de memoria est especificada, es incorrecta resultando en la parte superior de la String Storage Area siendo determinado byte demasiado alto. Esto puede verse con lo siguiente donde una cuerda ilegal es aceptada: 10 ACLARAN 200, y HF380 20 A$ STRING$ (201, "uno") 30 PRINT FRE () Porque debera haber una instruccin adicional DEC HL en 64EBH los valores nuevos de MEMSIZ y STKTOP son inicialmente determinado byte demasiado alto. Cundo la rutina cristalina en la carrera es llamado MEMSIZ es emulado en FRETOP, la parte superior del String Storage Area, lo cual resulta en este byte del mismo de ser demasiado alto igualmente. Aunque MEMSIZ y STKTOP son correctamente recomputados cuando los punteros del archivo son vueltos a arrancar, FRETOP queda con su valor incorrecto. Cuando el "FRE" declaracin es ajusticiado en lnea treinta, y coleccin de basura de la cuerda iniciada, FRETOP est recuperado para su valor correcto pero, porque la cuerda se derrama el String Storage Area por un byte, la cantidad de espacio libre exhibido es - 1 byte. Correctamente ajustar todos los punteros de sistema cualquier alteracin de la parte superior de memoria debera ser seguido inmediatamente por otra declaracin "clara" sin operands. La direccin ... 6520H Esta rutina computa la diferencia entre los contenidos de pares de registro HL y Delaware. Es un duplicado del captulo corto de cdigo de 64ECH para 64F1H y est completamente sin uso. - 163 5. EL INTRPRETE DE BASIC ROM La direccin ... 6527H ste es el "siguiente" manipulador de declaracin. El texto ms pretencioso est presente en la declaracin que el lazo Variable es localizado (5EA4H), de otra manera una direccin predeterminada de cero est ocupada. La pila es entonces registrada para el "FOR"
correspondiente bloque de parmetro (3FE2H). Si ningn bloque de parmetro es encontrado, entonces o si un "GOSUB" bloque de parmetro es encontrado primero, entonces uno "siguiente sin PUES" error es generado (405BH). Asumir el bloque de parmetro es encontrado el captulo interventor de pila, conjuntamente con cualquier "FOR" bloques puede contener, es descartado. El tipo del lazo Variable es luego tomado del bloque de parmetro y examinado para determinar la precisin precisada durante subsiguientes operaciones. El valor de PASO es tomado del bloque de parmetro y se suma a (3172H, 324EH o 2697H) los contenidos coetneos del lazo Variable que est entonces actualizado. El valor nuevo es comparado (2F4DH, 2F21H o 2F5CH) con el valor de terminacin del bloque de parmetro para determinar si el lazo ha terminado (65B6H). El lazo terminar para un PASO positivo si el valor nuevo del lazo es MAYOR que el valor de terminacin. El lazo terminar para un paso negativo si el valor nuevo del lazo est MENOS DEl valor de terminacin. Si el lazo no ha terminado el texto original de programa nmero de colocacin y de la lnea es tomado del parmetro bloquee y controle transferencias para el Runloop (45FDH). Si el lazo ha terminado, entonces el bloque de parmetro es descartado de la pila y, a menos que el ms texto de programa est presente adentro cules transferencias de control de regreso al principio del manipulador, controlan transferencias para el Runloop para ejecutar la siguiente declaracin (4601H). La direccin ... 65C8H Esta rutina es usada por el Evaluatodor Expression para encontrar la relacin (< > = ) entre dos operands de la cuerda. La direccin del primer descriptor de la cuerda es suministrada en la pila Z80 y la direccin del segundo en DAC. El resultado es devuelto en A de registro y las banderas por lo que respecta a las rutinas numricas de relacin: Ate con una cuerda a 1 = String 2 ... UN = 00H, Flag Z, Carolina Del Norte Ate con una cuerda a 1 < String 2 ... UN = 01H, Flag NZ, Carolina Del Norte Ate con una cuerda a 1 > String 2 ... NZ A=FFH, Flag, C La comparacin comienza en el primer carcter de cada cuerda y contina hasta que los dos personajes difieren o uno de los instrumentos de cuerda est exhausto. El control luego regresa al Evaluatodor Expression (4F57H) para colocar el resultado verdadero o falso y numrico en DAC. La direccin ... 65F5H Esta rutina es usada por el Evaluatodor Factor para ejercer al "OCT$" funcin para un operand contenido en DAC. El nmero es primero convertido a forma textual en FBUFFR (371EH) y luego la cuerda de resultado es creada (6607H). - 164 5. EL INTRPRETE DE BASIC ROM
La direccin ... 65FAH Esta rutina es usada por el Evaluatodor Factor para ejercer al "HEX$" funcin para un operand contenido en DAC. El nmero es primero convertido a forma textual en FBUFFR (3722H) y luego la cuerda de resultado es creada (6607H). La direccin ... 65FFH Esta rutina es usada por el Evaluatodor Factor para ejercer al "N$" funcin para un operand
contenido en DAC. El nmero es primero convertido a forma textual en FBUFFR (371AH) y luego la cuerda de resultado es creada (6607H). La direccin ... 6604H Esta rutina es usada por el Evaluatodor Factor para ejercer al "STR$" funcin para un operand contenido en DAC. El nmero es primero convertido a forma textual en FBUFFR (3425H) luego analizado para determinar su largo y direccin (6635H). Despus de comprobar eso suficiente espacio est disponible (668EH) la cuerda es copiada para el String Storage Area (67C7H) y el resultado que el descriptor cre (6654H). La direccin ... 6627H Esta primera parte de rutina inspecciona que hay suficiente espacio en el String Storage Area para la cuerda a cuyo largo est suministrado en A de registro (668EH). El largo de la cuerda y la direccin donde la cuerda ser colocada en el String Storage Area es entonces copiado para DSCTMP. La direccin ... 6636H Esta rutina es usada por el Evaluatodor Factor para analizar la cadena de caracteres a cuya direccin est suministrado en par de registro HL. La cadena de caracteres es escandida un carcter (00H o ") que termina es encontrado. El largo y direccin de puesta en marcha son luego colocados en DSCTMP (662AH) y el control cae en la rutina de creacin de descriptor. La direccin ... 6654H Esta rutina es usada por las funciones de la cuerda para crear un descriptor de resultado. El descriptor es emulado de DSCTMP para la siguiente colocacin disponible en TEMPST y su direccin colocada en DAC. A menos que TEMPST est lleno, en cul el caso una "frmula de la cuerda tambin complica" el error es generado, TEMPPT es aumentado por tres bytes y la rutina termina. La direccin ... 6678H Esta rutina exterioriza el mensaje, o cuerda, quin es aquel cuya direccin es suministrada en par de registro HL. La cuerda es analizada (6635H)
Y su almacenamiento liberado (67D3H). Los personajes sucesivos son luego tomados de la cuerda y exhibidos, por la rutina del estndar OUTDO, hasta que la cuerda est agotada. La direccin ... 668EH Esta rutina inspecciona que hay espacio en la String Storage Area para aadir la cuerda a cuyo largo est suministrados en A de registro. En las proposiciones del par de registro de la salida Delaware para la direccin de puesta en marcha en la String Storage Area donde la cuerda debera estar posada. El largo de la cuerda es primero sustrado de la posicin en uso en estos momentos y libre contenida en FRETOP. Esto es entonces comparado con STKTOP, la posicin admisible mnima para el almacenamiento de la cuerda, para determinar si hay espacio para la cuerda. Si as es que FRETOP est actualizado
con la colocacin nueva y la rutina termina. Si hay espacio insuficiente para la cuerda luego la cobranza de basura es iniciada (66B6H) para probar y eliminar cualquier instrumentos de cuerda muertos. Si, despus de que la coleccin de basura, all no fuera quieta lo suficientemente no espacio uno "por espacio de la cuerda" error es generado. La direccin ... 66B6H ste es el colector de basuras de la cuerda, su funcin es eliminar cualquier instrumentos de cuerda muertos del String Storage Area. El problema bsico con cuerda Variables, a distincin de numricos, es que sus largos varan. Si los cuerpos de la cuerda se guardaron con su Variables en el Storage Variable Area aun tales declaraciones aparentemente simples como A$ "X" tomara, entonces el movimiento de miles de bytes de memoria y despacio ejecucin acelera dramticamente. El mtodo usado por el Interpreter para vencer este problema es conservar la cuerda que los cuerpos distancian de los Variables. As los instrumentos de cuerda son guardados en el String Storage Area y cada agarres Variables un tres descriptor de byte conteniendo el largo y direccin de la cuerda asociada. Cuandoquiera que una cuerda es asignada a un Variable se agrega simplemente para el montn de instrumentos de cuerda existentes en el String Storage Area y el descriptor de la Variable se alter. Ningn intento est hecho para eliminar cualquier cuerda previa perteneciendo al Variable, reestructurando el montn, como esto arrasara cualquier ganancias de rendimiento especfico. Si suficientes asignaciones Variables estn hechas, entonces es inevitable que el String Storage Area se llenar. En un programa tpico muchos de estos instrumentos de cuerda sern sin uso, ese es el resultado de asignaciones previas. La coleccin de basura es el proceso por medio de lo que estos instrumentos de cuerda muertos estn removidos. Cada cuerda Variable en la memoria, el inclusivo Arrays y el presente local Variables durante la evaluacin de usuario definieron funciones, es examinado hasta que lo uno sea encontrado quin es aquel cuya cuerda se guarda ms alto en el montn. Esta cuerda es luego movida a la parte superior del String Storage Area y los contenidos Variables modificados para apuntar hacia la posicin nueva. El dueo de la siguiente cuerda ms alta es entonces encontrado y el proceso repetido hasta cada cuerda perteneciendo a un Variable ha sido compactado.
- 166 5. EL INTRPRETE DE BASIC ROM Si un nmero grande de Variables est presente, entonces la basura la coleccin puede tomar un tiempo apreciable. El proceso puede ser visto en el trabajo con el siguiente programa que repetidamente asigna a la cuerda "AAAA" a cada elemento del Array A$. El programa correr a toda velocidad para que las primeras doscientas cincuenta asignaciones y luego la pausa eliminen lo cincuenta instrumentos de cuerda muertos. Unas adicionalmente cincuenta asignaciones luego pueden estar hechas antes de que una ms coleccin de basura sea requerida: 10 ACLARAN 1000 20 OSCURECEN a A$ (200) 30 FOR N = 0 PARA 200 40 A$ (N) = STRING$ (4, "uno") 50 ESCRIBEN EN LETRAS DE IMPRENTA ""; 60 SIGUIENTE N 70 GOTO 30 El String Storage Area est tambin acostumbrado a mantener los instrumentos de cuerda intermedios producidos durante la evaluacin de expresin. Porque tantas funciones de la cuerda
toman discusiones mltiples, las tomas "MID$" tres por ejemplo, la gestin de resultados intermedios es un problema principal. Para ocuparse de eso una va de entrada estndar para colocar en serie resultados es tomado a todo lo largo del Interpreter. Un productor de una cuerda simplemente aade el cuerpo de la cuerda para el montn en el String Storage Area, aade el descriptor para el montn de descriptor en TEMPST y coloca la direccin del descriptor en DAC. Depende del usuario del resultado para liberar este almacenamiento (67D0H) una vez que ha procesado la cuerda. Esta regla se aplica a todas las partes del sistema, de los manipuladores individuales de funcin de regreso a travs del Evaluatodor Expression para los manipuladores de declaracin, con slo dos excepciones. La primera excepcin ocurre cuando el Evaluatodor Factor encuentra una cuerda explcitamente declarada, como "algo" en el texto de programa. En este caso no hay que copiar la cuerda para el String Storage Area como el original saciar. La segunda excepcin ocurre cuando el Evaluatodor Factor encuentra una referencia para un Variable. En este caso no hay que colocar una copia del descriptor en TEMPST como uno ya existe dentro del Variable. La direccin ... 6787H Esta rutina es usada por el Evaluatodor Expression para concatenar dos operands de la cuerda. Controle transferencias aqu cuando una seal es encontrada despus de un operand de la cuerda as la primera accin tomado debe ir a traer el segundo operand de la cuerda por el Evaluatodor Factor (4DC7H). Los largos son luego tomados de ambos descriptores de la cuerda y se agregan conjuntamente para comprobar el largo de la cuerda combinada. Si esto es mayor que doscientos cincuenta y cinco personajes una "cuerda demasiado largo" error es generada. Despus de comprobar ese espacio est disponible en el String Storage Area (6627H) el almacenamiento de ambos operands es liberado (67D6H). La primera cuerda es entonces copiada para el String Storage Area (67BFH) - 167 5. EL INTRPRETE DE BASIC ROM
Y se sigue por lo segundo (67BFH). El descriptor de resultado es creado (6654H) y control se traslada de regreso al Evaluatodor Expression (4C73H) ' La direccin ... 67D0H Esta rutina libera cualquier almacenamiento ocupado por la cuerda cuyo descriptor la direccin es contenida en DAC. La direccin del descriptor es tomada de DAC y examinada para determinar si es eso del ltimo descriptor en TEMPST (67EEH), en caso de que no la rutina termina. TEMPPT diferente es disminuido por limpieza total de bytes de tres este descriptor de TEMPST. La direccin del cuerpo de la cuerda es luego tomada del descriptor y comparada con FRETOP para la sede si sta es la cuerda mnima en el String Storage Area, en caso de que no la rutina termina. De otra manera el largo de la cuerda se agrega para FRETOP, lo cual est entonces actualizado con esto valor nuevo, liberando el almacenamiento ocupado por el cuerpo de la cuerda. La direccin ... 67FFH Esta rutina es usada por el Evaluatodor Factor para ejercer al "LEN" funcin para un operand contenido en DAC. El almacenamiento de operand's es liberado (67D0H) y el largo de la cuerda tomado del descriptor y colocado en DAC como un entero (4FCFH). La direccin ... 680BH
Esta rutina es usada por el Evaluatodor Factor para ejercer al "ASC" funcin para un operand contenido en DAC. El almacenamiento de operand's es liberado y la cuerda que el largo examin (6803H), si es cero una "llamada ilegal de funcin" error es generado (475AH). De otra manera el primer is. de carcter tomado de la cuerda y colocado en DAC como un entero (4FCFH). La direccin ... 681BH Esta rutina es usada por el Evaluatodor Factor para ejercer al "CHR$" funcin para un operand contenido en DAC. Despus de comprobar eso suficiente espacio est disponible (6625H) el operand es convertido a un solo entero de byte (521FH). Este carcter es luego colocado en el String Storage Area y el resultado que el descriptor cre (6654H). La direccin ... 6829H Esta rutina es usada por el Evaluatodor Factor para ejercer al "STRING$" funcin. Despus de revisar en busca del carcter manifiesto del parntesis el largo que el operand es evaluado y colocado en registro E (521CH). El segundo operand es entonces evaluado (4C64H). Si es numrico, entonces sea convertido a un solo entero de byte (521FH) y est posado en A de registro. Si es una cuerda el primer carcter es tomada de ella y est posado en A de registro (680FH). El control luego las cadas en el "SPACE$" funcin para crear la cuerda de resultado.
La direccin ... 6848H Esta rutina es usada por el Evaluatodor Factor para ejercer al "SPACE$" funcin para un operand contenido en DAC. El operand es primero convertido a un solo entero de byte en registro E (521FH). Despus de comprobar eso suficiente espacio est disponible (6627H) el nmero requerido de espacios es copiado para el String Storage Area y el resultado que el descriptor cre (6654H). La direccin ... 6861H Esta rutina es usada por el Evaluatodor Factor para ejercer al "LEFT$" funcin. Primer la direccin de descriptor de operand y el operand de segundo de entero son suministrados en la pila Z80. El tamao de la rebanada es tomado de la pila (68E3H) y comparado para el largo de la cuerda de la fuente. Si el largo de la cuerda de la fuente est menos de la rebanada tamao, entonces lo reemplaza como el largo para extraer. Despus de comprobar eso suficiente espacio est disponible (668EH) el nmero requerido de personajes es emulado desde el principio de la fuente forma una serie para el String Storage Area (67C7H). El almacenamiento de la cuerda de la fuente est entonces liberado (67D7H) y el resultado que el descriptor cre (6654H). La direccin ... 6891H Esta rutina es usada por el Evaluatodor Factor para ejercer al "RIGHT$" funcin. Primer la direccin de descriptor de operand y el operand de segundo de entero son suministrados en la pila Z80. El tamao de la rebanada es tomado de la pila (68E3H) y sustrado del largo de la cuerda de la fuente para determinar la colocacin de puesta en marcha de la rebanada. El control luego se traslada para el "LEFT$" rutina para extraer la rebanada (6865H). La direccin ... 689AH
Esta rutina es usada por el Evaluatodor Factor para ejercer al "MID$" funcin. Primer la direccin de descriptor de operand y el operand de segundo de entero son suministrados en la pila Z80. La colocacin de puesta en marcha es tomada de la pila (68E6H) e inspeccionada, si es cero una "llamada ilegal de funcin" error es generado (475AH). El tamao optativo de la rebanada es entonces evaluado (69E4H) y control se traslada para el "LEFT$" rutina para extraer la rebanada (6869H). La direccin ... 68BBH Esta rutina es usada por el Evaluatodor Factor para ejercer al "VAL" funcin para un operand contenido en DAC. El largo de la cuerda es tomado del descriptor (6803H) e inspeccionado, si es cero que es colocado en DAC como un entero (4FCFH). El largo se agrega luego a la direccin de puesta en marcha del cuerpo de la cuerda para dar la posicin del carcter inmediatamente despus de l. Esto est por ahora repuesto con un byte de cero y la cuerda es convertida a forma numrica en DAC (3299H). El original
El carcter es entonces recuperado y la rutina termina. El delimitador temporal de byte de cero es menester porque los instrumentos de cuerda estn apiados conjuntamente en el String Storage Area, sin l el convertidor numrico seguira corriendo en tener xito ata con una cuerda. La direccin ... 68E3H Esta rutina es usada por el "LEFT$", "MID$" y "RIGHT$" funcionan manipuladores al cheque que el siguiente carcter del texto de programa es ")" y luego a hacer estallar un operand del Z80 apila en par de registro Delaware. La direccin ... 68EBH Esta rutina es usada por el Evaluatodor Factor para ejercer al "INSTR" funcin. El primer operand, cul puede ser la puesta en marcha colocacin o la fuente forman una serie, es evaluado (4C62H) y su tipo probado. Si es la fuente forme una serie, entonces una colocacin de puesta en marcha de incumplimiento de uno es tomada. Si es el operand de colocacin de puesta en marcha su valor es comprobado y el operand de la cuerda de la fuente evaluado (4C64H). La cuerda del patrn es entonces evaluada (4C64H) y el almacenamiento de ambos operands liberados (67D0H). El largo de la cuerda del patrn es comprobado y, si cero, la colocacin de puesta en marcha es colocada en DAC (4FCFH). La cuerda del patrn es entonces a cuadros en contra de personajes sucesivos de la cuerda de la fuente, comenzando en la puesta en marcha sita, hasta que un encuentro es encontrado o la cuerda de la fuente est agotada. Con una bsqueda exitosa la colocacin de carcter de la subcuerda es colocada en DAC como un entero (4FCFH), de otra manera un resultado de cero es devuelto. La direccin ... 696EH ste es el "MID$" manipulador de declaracin. Despus de revisar en busca del carcter manifiesto del parntesis el destino Variable es hallado (5EA4H) y comprobado para asegurar que es una cuerda el tipo (3058H). La direccin del cuerpo de la cuerda es luego tomada del Variable y examinada para determinar si est dentro del Program Text Area, como sera el caso para una cuerda explcitamente declarada. Si esto es el caso el cuerpo de la cuerda es copiado para el String Storage Area
(6611H) y un descriptor nuevo copiado para el Variable (2EF3H). Esto est hecho para evitar modificar el texto de programa. La colocacin de puesta en marcha es entonces evaluada (521CH) y comprobada, si es cero una "llamada ilegal de funcin" error es generado (475AH). El operand optativo de largo de la rebanada es evaluado (69E4H) seguido por la cuerda de reposicin (4C5FH) cuyo almacenamiento est entonces liberado (67D0H). Los personajes son entonces copiados de la cuerda de reposicin para la cuerda de destino hasta ya sea la rebanada largo es completado o la cuerda de reposicin est agotada. La direccin ... 69E4H Esta rutina es usada por las funciones diversas de la cuerda para evaluar a un operand optativo (521CH) y regresar el resultado en registro
E. Si ningn operand est presente, entonces un valor predeterminado de 255 es devuelto. La direccin ... 69F2H Esta rutina es usada por el Evaluatodor Factor para ejercer al "FRE" funcin para un operand contenido en DAC. Si el operand es numrico, entonces la sola diferencia de precisin entre el Z80 Stack Pointer y los contenidos de STREND es colocada en DAC (4FC1H). Si el operand es una cuerda escriba a mquina, entonces su almacenamiento es liberado (67D3H) y coleccin de basura iniciada (66B6H). La sola diferencia de precisin entre los contenidos de FRETOP y esos de STKTOP son luego colocados en DAC (4FC1H). La direccin ... 6A0EH Esta rutina es usada por el archivo yo los manipuladores de la / O para analizar un filespec tan " UNO:FILENAME.BAS ". El filespec consta de tres partes, el dispositivo, el filename y la extensin de tipo. En las proposiciones del par de registro de entrada HL para el principio del filespec en el texto de programa. En registro de la salida la D sostiene el cdigo del dispositivo, el filename est de cero de colocaciones para siete de FILNAM y la extensin de tipo en colocaciones ocho para diez. Cualquier colocaciones sin uso se llenan de espacios. La cuerda del filespec es evaluada (4C64H) y su almacenamiento liberado (67D0H), si la cuerda es de largo de cero un "mal nombre del archivo" error es generado (6E6BH). El nombre del dispositivo es personajes a los que se se analiz gramaticalmente (6F15H) y sucesivos y tomados del filespec y est posado en FILNAM hasta que la cuerda est agotada, uno "" El carcter es encontrado o FILNAM est lleno. Un "mal nombre del archivo" error es generado (6E6BH) si el filespec contiene cualquier carcteres de control, esto es esos quin es aquel cuyo valor es ms pequeo que 20H. Si el filespec contiene una extensin de tipo un "mal nombre del archivo" error es generada (6E6BH) si es ms largo que tres personajes o si el filename es ms largo que ocho personajes. Si ninguna extensin de tipo est presente que el filename puede ser, entonces cualquier largo, personajes adicionales est simplemente ignorado. La direccin ... 6A6DH Esta rutina es usada por el archivo yo los manipuladores de la / O a localizar lo que yo / O modero FCB cuyo nmero es suministrado en A de registro. El nmero del amortiguador es primero dado jaque en contra de MAXFIL y un "mal nmero del archivo" error generado (6E7DH) si es demasiado grande. De otra manera la direccin requerida es tomada del bloque del puntero
del archivo y est posado en par de registro HL y el modo del amortiguador tomado de byte 0 del FCB y colocado en A de registro. La direccin ... 6A9EH Esta rutina es usada por el archivo yo los manipuladores de la / O a evaluar uno que yo amortiguador de la / O numero y para localizar a su FCB. Cualquier carcter es saltado (4666H) y el amortiguador que el nmero evalu (521CH). El FCB no est ubicado (6A6DH) y un "archivo que no" el error "manifiesto" gener
(6E77H) si el byte de modo del amortiguador es cero. De otra manera la direccin FCB es colocada en PTRFIL para reencauzar la salida Interpreter's. La direccin ... 6AB7H ste es el manipulador "accesible" de declaracin. El filespec es analizado (6A0EH) y cualquier siguiente modo convertido al byte correspondiente de modo, stos son: "Para la ENTRADA" (01H), "para la SALIDA" (02H) y "pues ANEXA" (08H). Si ningn modo es explcitamente, entonces declar que el modo aleatorio (04H) es asumido. Los "de AS - los personajes son a los que se dio jaque y el nmero del amortiguador evaluado (521CH), si ste es cero un" Mal nmero del archivo " el error es generado (6E7DH). El FCB est luego ubicado (6A6DH) y un "archivo ya" el error "manifiesto" gener (6E6EH) si el byte de modo del amortiguador es cualquier cosa aparte del cero. El cdigo del dispositivo es colocado en byte 4 del FCB, la funcin manifiesta despachada (6F8FH) y la salida de Interpreter puesto a cero para la pantalla (4AFFH). La direccin ... 6B24H Esta rutina es usada por el archivo yo los manipuladores de la / O a cerrar lo que yo / O modero quin es aquel cuyo nmero es suministrado en A de registro. El FCB est ubicado (6A6DH) y, provey el amortiguador est funcionando, la funcin cercana despachada (6F8FH) y el amortiguador lleno con pone en el cero (6CEAH). PTRFIL y el byte de modo FCB son entonces puestos en el cero para poner a cero la salida de Interpreter para la pantalla. La direccin ... 6B5BH sta es la "carga", "MERGE" y "filespec ANDADO" manipulador de declaracin. El filespec es analizado (6A0EH) y luego, para "la CARGA" y "anda" nico, el texto de programa examinado para determinar si la "interrogacin" andada en automvil opcin es especificada. Yo el amortiguador de la / O 0 soy abierto para la entrada (6AFAH) y el primer byte de FILNAM determinado para FFH si andado en automvil es requerido. Para "la CARGA" y "la CARRERA" slo cualquier texto de programa es entonces aclarado por el manipulador "nuevo" (6287H) de declaracin. Como esto pondr a cero la salida de Interpreter para la pantalla el amortiguador FCB est otra vez localizada y colocada en PTRFIL (6AAAH). El control luego se traslada directamente para el Interpreter Mainloop (4134H) para que el texto de programa sea cargado como si escrito a mquina del teclado. Noto que ningn error inspeccionando de cualquier tipo es efectuado en los datos ledos. La direccin ... 6BA3H
ste es el "SAVE" manipulador de declaracin. El filespec es analizado (6A0EH) y el texto de programa examinado para determinar si el sufijo de la "A" de ASCII est presente. Esto tiene slo importancia bajo el BASIC Disk, da lo mismo en una mquina estndar MSX. Yo el amortiguador de la / O 0 soy abierto para la salida (6AFAH) y el control transfiere para la "lista" manipulador de declaracin (522EH) devolver el texto de programa. Noto que ninguna informacin de comprobacin de error de cualquier tipo acompaa el texto.
La direccin ... 6BDAH Esta rutina es usada por el archivo que yo los manipuladores de la / O para devolver el dispositivo codifica para lo actualmente activo yo el amortiguador de la / O. La direccin FCB es tomada de PTRFIL que luego el cdigo del dispositivo llevado de byte 4 del FCB y colocado en A de registro. La direccin ... 6BE7H Esta rutina es usada por el archivo yo los manipuladores de la / O para realizar una operacin en un nmero de yo / que O modera. La direccin de la rutina pertinente es suministrada en par de registro BC y la cuenta del amortiguador en A de registro. Por ejemplo si el par de registro AC contuvo 6B24H y la A de registro contuvo amortiguadores del 03H 3, entonces 2, 1 y 0 estaran cerrados. La rutina tiene una funcin ligeramente diferente si es introducida con FLAG NZ. En este caso lo yo que el amortiguador de la / O numera est ocupado secuencialmente del texto de programa y evaluado (521CH) antes de que la operacin sea realizada, un caso tpico podra tener # "1 aos de edad, # 2". La direccin ... 6C14H ste es el manipulador "cercano" de declaracin. El par de registro AC est colocado para 6B24H, la A de registro est cargada de los contenidos de MAXFIL y el nmero requerido de amortiguadores cerrados (6BE7H). La direccin ... 6C1CH Esta rutina es usada por el archivo yo los manipuladores de la / O a cerrar cada yo el amortiguador de la / O. El par de registro AC est colocado para 6B24H, la A de registro est cargada de los contenidos de MAXFIL y todos los amortiguadores cerrados (6BE7H). La direccin ... 6C2AH ste son los "LFILES" manipulador de declaracin. PRTFLG es poco cero hecho, a dirigir salida para la impresora, y controlar cae en los "archivos" manipulador de declaracin. La direccin ... 6C2FH ste son los "FILES" manipulador de declaracin, una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 6C35H Controle transferencias aqu del "PUT" general y "traiga a" los manipuladores (7758H) cuando el texto de programa contiene cualquier cosa aparte de un "bloque de objetos movibles" seal.
Uno "secuencial yo / la O slo" el error soy generado (6E86H) en una mquina estndar MSX. La direccin ... 6C48H Esta rutina es usada por el archivo yo los manipuladores de la / O para
Secuencialmente devuelva el carcter abastecido en A de registro. El carcter es colocado en C de registro y la salida secuencial que la funcin despach (6F8FH). La direccin ... 6C71H Esta rutina es usada por el archivo yo los manipuladores de la / O para secuencialmente introducir en la computadora un solo carcter. La funcin secuencial de entrada es despachada (6F8FH) y el carcter regres en A de registro, FLAG C indica una condicin EOF (el Fin De File). La direccin ... 6C87H Esta rutina es usada por el Evaluatodor Factor para ejercer al "INPUT$" funcin. El texto de programa es comprobado para el "$" y "(" los personajes y el operand de largo evaluados (521CH). Si uno yo el nmero del amortiguador de la / O estoy presente es evaluado, entonces el FCB localiz (6A9EH) y el byte de modo examinado. Una "entrada despus del fin" el error es generada (6E83H) si el amortiguador no est de entrada o modo aleatorio. Despus de comprobar eso suficiente espacio est disponible (6627H) el nmero requerido de personajes es secuencialmente introduzca en la computadora (6C71H), o cobrado por la rutina del estndar CHGET, y copiado para el String Storage Area. Finalmente el descriptor de resultado es creado (6654H). La direccin ... 6CEAH Esta rutina es usada por el archivo yo los manipuladores de la / O para llenar el amortiguador cuyo FCB pone la direccin es contenido en PTRFIL con doscientos cincuenta y seis pone en el cero. La direccin ... 6CFBH Esta rutina es usada por el archivo yo los manipuladores de la / O para devolver, en registro parea HL, la direccin de puesta en marcha del amortiguador cuyo FCB dirige la palabra a es contenida en PTRFIL. Esto justamente implica aadir nueve para la direccin FCB. La direccin ... 6D03H Esta rutina es usada por el Evaluatodor Factor para ejercer al "LOC" funcin para lo yo el amortiguador de la / O cuyo nmero soy contenido en DAC. El FCB est ubicado (6A6AH) y la funcin LOC despachada (6F8FH). Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 6D14H Esta rutina es usada por el Evaluatodor Factor para ejercer al "LOF" funcin para lo yo el amortiguador de la / O cuyo nmero soy contenido en DAC. El FCB est ubicado (6A6AH) y la
funcin LOF despachada (6F8FH). Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX.
La direccin ... 6D25H Esta rutina es usada por el Evaluatodor Factor para ejercer al "EOF" funcin para lo yo el amortiguador de la / O cuyo nmero soy contenido en DAC. El FCB est ubicado (6A6AH) y la funcin EOF despachada (6F8FH). La direccin ... 6D39H Esta rutina es usada por el Evaluatodor Factor para ejercer a los "FPOS" funcin para lo yo el amortiguador de la / O cuyo nmero soy contenido en DAC. El FCB est ubicado (6A6AH) y la funcin FPOS despachada (6F8FH). Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 6D48H Controle transferencias para esta rutina cuando el Interpreter Mainloop encuentra una declaracin directa, eso no es uno con ningn nmero de la lnea. La rutina del estndar ISFLIO se usa primero para determinar si una "carga" declaracin es activa. Si la entrada proviene de, entonces las transferencias de control del teclado para la ejecucin Runloop apuntan (4640H) para ejecutar la declaracin. Si la entrada viene del amortiguador del casete 0 est cerrado (6B24H) y una "declaracin directa en archivo" que el error gener (6E71H). Esto podra dar con una mquina estndar MSX tampoco a travs de un error del casete o intentando para cargar un archivo del texto sin nmeros de la lnea. La direccin ... 6D57H Esta rutina est usada por la "entrada", "entrada de la LNEA" y manipuladores "estampados" de declaracin para revisar en busca de la presencia de un carcter en el texto de programa. Si uno es encontrado lo yo nmero del amortiguador de la / O soy evaluado (521BH), entonces el FCB localiz y su direccin colocada en PTRFIL (6AAAH). El byte de modo del FCB es entonces comparado con el modo que el nmero suministr por el manipulador de declaracin en registro C, si no hacen juego con un "mal nmero del archivo" error es generado (6E7DH). Con "impresin" los modos admisibles son salida, al azar y anexan. Con "entrada" y "entrada de la LNEA" los modos admisibles son entrada y al azar. No note eso en una mquina estndar MSX no que todos estos modos son a los que se dio soporte en niveles inferiores. El alguna suerte de error consecuentemente ser generado en una posterior etapa para modos ilegales. La direccin ... 6D83H Esta rutina es usada por la "entrada" manipulador de declaracin para introducir en la computadora una serie de uno yo el amortiguador de la / O. Un regreso es primero establecido a la "lectura /entrada" manipulador de declaracin (4BF1H). Los personajes que delimitan la entrada forman una serie, coma y espacio para una Variable numrico y la coma slo para una cuerda Variable, son colocados en D de registros y E y transferencias de control para la "lnea INTRODUCEN EN LA COMPUTADORA" rutina (6DA3H).
La direccin ... 6D8FH ste es la "entrada de la LNEA" manipulador de declaracin cuando la entrada est de uno yo el amortiguador de la / O. El nmero del amortiguador es evaluados, el FCB localizados y el modo comprobados (6D55H). La Variable a la que asignar es luego hallada (5EA4H) y su tipo a cuadros para asegurarlo es un tipo de la cuerda (3058H). Un regreso es establecido al manipulador "dejado" (487BH) de declaracin para realizar la asignacin y la cuerda de entrada cobrada. Los personajes son secuencialmente entrada (6C71H) y colocado en BUF hasta que el delimitador correcto es encontrado, EOF es alcanzado o BUF se llena (6E41H). Cuando la condicin que termina es cumplida y la asignacin es para un Variable numrico la cuerda es convertida a forma numrica en DAC (3299H). Cundo la asignacin es para una cuerda Variable la cuerda es analizada y el resultado que el descriptor cre (6638H). Para "la ENTRADA de la LNEA" todos los personajes son aceptados hasta que un cdigo de RETORNO DE CARRO sea cumplido. Note que si este cdigo de RETORNO DE CARRO es precedido por un LF cdigo luego no funcionar como un delimitador sino meramente ser aceptado como parte de la cuerda. Para "la ENTRADA" para un Variable numrico conduciendo espacios es desnudados luego personajes aceptados hasta que un cdigo de RETORNO DE CARRO, un espacio o una coma sea alcanzado. Note que por lo que respecta a "la ENTRADA de la LNEA" un cdigo de RETORNO DE CARRO no funcionar como un delimitador cundo precedido por un cdigo LF. En este caso de cualquier forma que el cdigo de RETORNO DE CARRO no ser colocado en BUF pero ignorado. Para "la ENTRADA" para una conduccin de la cuerda Variable los espacios son devastados luego personajes aceptados hasta un RETORNO DE CARRO o la coma es alcanzada. Note que por lo que respecta a "la ENTRADA de la LNEA" un cdigo de RETORNO DE CARRO no funcionar como un delimitador cundo precedido por un cdigo LF. En este caso sin embargo ningn cdigo ser colocado en BUF ambos estn ignorados. Un modo alternativo es introducido cuando el primer carcter lee, despus de cualquier espacios, lo hace un carcter doble de cita. En este caso todos los personajes sern aceptados, y se guardarn en BUF, hasta que otro delimitador doble de cita sea ledo. Una vez que la cuerda de entrada ha sido aceptada el delimitador que termina es examinado para ver si cualquier accin especial es precisada con relacin a personajes de arrastre. Si la cuerda de entrada se deslind por un carcter doble de cita o un espacio luego cualquier subsiguientes espacios sern ledos adentro e ignorados hasta que un carcter de poco espacio es encontrado. Si este carcter es una coma o cdigo de RETORNO DE CARRO luego es aceptada e ignorada. De otra manera una funcin del putback es despachada (6F8FH) para devolver el carcter para lo yo el amortiguador de la / O. Si la cuerda de entrada se deslind por un RETORNO DE CARRO cdigo luego el siguiente carcter es ledo adentro e inspeccionado. Si ste es un LF cdigo, entonces ser aceptado pero ignorado. Si no es un cdigo LF luego una funcin del putback es despachada (6F8FH) para devolver el carcter para lo yo el amortiguador de la / O. La direccin ... 6E6BH ste es un archivo de grupo de diez yo / que la O relacion generadores de error. La E de registro est cargada del cdigo pertinente de error y el control
- 176 5. EL INTRPRETE DE BASIC ROM Las transferencias para el manipulador de error (406FH): ADDR. El ERROR El nombre del archivo del 6E6BH Bad El 6E6EH File ya claro La declaracin del 6E71H Direct en archivo El 6E74H File no encontrado El 6E77H File cerrado El excedente del 6E7AH Field El nmero del archivo del 6E7DH Bad El error del 6E80H Internal El 6E83H Input despus del fin El 6E86H Sequential yo / la O slo La direccin ... 6E92H ste es el "BSAVE" manipulador de declaracin. El filespec es analizado (6A0EH) y la direccin de principio evaluada (6F0BH). La direccin de alto es entonces evaluado (6F0BH) y colocado en SAVEND seguido por la direccin optativa (6F0BH) de entrada que es colocada en SAVENT. Si ninguna direccin de entrada existe, entonces la direccin de principio est ocupada en lugar de eso. El cdigo del dispositivo es comprobado para asegurar que es CAS, en caso de que no un "mal nombre del archivo" error es generado (6E6BH), y los datos escritos para casete (6FD7H). Note tan no moderador est involucrado, datos estn escritos directamente para el casete, y ninguna informacin de comprobacin de error acompaa los datos. La direccin ... 6EC6H ste es el "BLOAD" manipulador de declaracin. El filespec es analizado (6A0EH) y RUNBNF hizo poco cero si la "interrogacin" andada en automvil opcin est presente en el texto de programa. El offset optativo de carga, con un valor predeterminado de cero, es entonces evaluado (6F0BH) y el cdigo del dispositivo a cuadros para asegurar que sea CAS, en caso de que no un "mal nombre del archivo" error es generado (6E6BH). Los datos no son entonces ledo directamente de casete (7014H), al igual que con "BSAVE" error moderador o inspeccionando est involucrado. La direccin ... 6EF4H Controle transferencias para esta rutina cuando el manipulador de declaracin "BLOAD" ha completado cargar datos en la memoria. Si RUNBNF es amortiguador de cero 0 est cerrado (6B24H) y controle ingresos para el Runloop. Amortiguador diferente 0 es cerrado (6B24H), una direccin del remitente de 6CF3H es establecida (esta rutina justamente hace estallar el puntero del texto de programa de vuelta a par de registro HL y regresa al Runloop) y el control se traslada para la direccin contenida en SAVENT. La direccin ... 6F0BH Esta rutina es usada por el "BLOAD" y "BSAVE" manipuladores para evaluar una direccin operand, el resultado es devuelto en par de registro Delaware. El operand es evaluado (4C64H) luego se convierte para uno
- 177 5. EL INTRPRETE DE BASIC ROM El entero (5439H). La direccin ... 6F15H Esta rutina es usada por el analizador del filespec para analizar gramaticalmente un nombre del dispositivo como "CAS"". En registro de entrada que las proposiciones del par HL para el principio de la cuerda del filespec y la E de registro contienen su largo. Si ningn nombre del dispositivo est presente, entonces el dispositivo predeterminado que el cdigo (CAS=FFH) es devuelto en A de registro con FLAG Z. Si un nombre legal del dispositivo est presente, entonces su cdigo es devuelto en A de registro con FLAG NZ. El filespec es examinado uno "" El carcter es encontrado luego el nombre comparado con cada uno del dispositivo legal nombra en la mesa del dispositivo en 6F76H. Si un encuentro es encontrado, entonces el cdigo del dispositivo es tomado de la mesa y regresado en A de registro. Si ningn encuentro es encontrado, entonces las transferencias de control para el ROM externo investigan rutina (55F8H). Noto que cualquier personajes de la letra minscula son puestos para la caja alta para propsitos de comparacin. As el crt y CRT, por ejemplo, es el mismo dispositivo. La direccin ... 6F76H Esta mesa es usada por el analizador gramatical de nombre del dispositivo, contiene los cuatro nombres del dispositivo y cdigos disponibles en una mquina estndar MSX: CAS ... FFH LPT ... FEH CRT ... FDH GRP ... FCH La direccin ... 6F87H Esta mesa es usada por el repartidor de funcin (6F8FH), contiene la direccin de la mesa de desciframiento de funcin para cada uno de los dispositivos MSX de cuatro estndar: CAS ... 71C7H LPT ... 72A6H CRT ... 71A2H GRP ... 7182H La direccin ... 6F8FH ste es el archivo yo el repartidor de funcin de la / O. En conjuncin con la estructura del amortiguador de Interpreter que le provee un dispositivo consistente, mtodo independiente de introducir en la computadora o devolver datos. La funcin requerida al cdigo est suministrada en A de registro y la direccin del amortiguador FCB en registro parean a HL. El cdigo del dispositivo es tomado de byte 4 del FCB y examinado para determinar si es uno de los cuatro dispositivos estndar, en caso de que no el control transfiere para el repartidor externo (564AH) de funcin ROM. De otra manera la direccin de la mesa de desciframiento de funcin del dispositivo es tomada de la mesa en 6F87H, la direccin de la funcin requerida tomado de ella y el control transferido para el manipulador pertinente de funcin.
- 178 -
La direccin ... 6FB7H ste es el "CSAVE" manipulador de declaracin. El filename es evaluado (7098H) seguido por la tasa optativa de baudio operand (7A2DH). El escollo de la identificacin est luego escrito a casete (7125H) con un byte del filetype de D3H. Los contenidos del Program Text Area estn escritos directamente para casete como un soltero que los datos bloquean (713EH). Noto que ninguna informacin de comprobacin de error acompaa los datos. La direccin ... 6FD7H Las transferencias de control para esta rutina del "BSAVE" manipulador de declaracin para escribir un bloque de memoria para el casete. El escollo de la identificacin est primero escrito a casete (7125H) con un byte del filetype de D0H. El motor se enciende luego y un encabezado pequeo escrito para casete (72F8H) La direccin de puesta en marcha es a la que se hizo estallar de la pila Z80 y est escrito para casete LSB primero, el segundo MSB (7003H). La direccin de alto es tomada de SAVEND y est escrito para casete LSB primero, el segundo MSB (7003H). La direccin de entrada es tomada de SAVENT y est escrito para casete LSB primero, el segundo MSB (7003H). El rea requerido de memoria est luego escrito al byte del mismo del casete a la vez (72DEH) y el motor del casete se desactiv por la rutina del estndar TAPOOF. Noto que ninguna informacin de comprobacin de error acompaa los datos. La direccin ... 7003H Esta rutina escribe los contenidos de par de registro HL para casete con L de registro primero (72DEH) y el segundo de la H de registro (72DEH). La direccin ... 700BH Esta rutina lee dos bytes de casete y lugares lo de primero en registro L (72D4H), el segundo en registro H (72D4H). La direccin ... 7014H Las transferencias de control para esta rutina del "BLOAD" manipulador de declaracin para cargar datos del casete en la memoria. El casete es ledo hasta que un bloque de la identificacin con un tipo del archivo de D0H y el filename correcto sea encontrado (70B8H). El encabezado del bloque de datos est luego ubicado en el casete (72E9H). El valor de offset es al que se hizo estallar de la pila Z80 y se suma a la direccin de principio del casete (700BH). La direccin de alto es leda de casete (700BH) y el offset adems de eso igualmente. La direccin de entrada es leda de casete (700BH) y coloca a en SAVENT en caso andado en automvil es precisado. Los bytes sucesivos de datos son entonces ledos de casete (72D4H) y estn posado en la memoria, al principio dirigen la palabra inicialmente, hasta que la direccin de alto es alcanzada. Finalmente el motor est apagado por la rutina del estndar TAPIOF y el control transfiere para el "BLOAD" punto de terminacin (6EF4H).
ste es el "CLOAD" y "CLOAD"? El manipulador de declaracin. El texto de programa es primero a cuadros para una seal "estampada" de arrastre (91H) que es cmo lo "? El carcter es tokenized. El filename es entonces evaluado (708CH) y el casete ledo hasta un bloque de la identificacin con un filetype de D3H y el filename correcto es encontrado (70B8H). Para "CLOAD" una operacin "nueva" es entonces realizada (6287H) para borrar el texto de programa en uso en estos momentos. Para "CLOAD"? Todos los punteros en el Program Text Area se convierten para revestir nmeros (54EAH) para hacer juego con los datos del casete. El encabezado del bloque de datos est ubicado en el casete y los bytes sucesivos de datos leyeron de casete y colocado en la memoria o se compararon con los contenidos coetneos (715DH) de memoria. Cundo el bloque de datos ha sido completamente ledo que el mensaje "Oklahoma" es exhibido (6678H) y el control se traslada directamente hasta el fin del Interpreter Mainloop (4237H) para volver a arrancar los punteros Variables de almacenamiento. Para "CLOAD"? La lectura del bloque de datos terminar si el byte del casete no equivale al byte del texto de programa en la memoria. Si la direccin donde esto ocurri est por encima del fin del Program Text Area, entonces luego el manipulador termina con un mensaje "muy bueno" como antes. De otra manera uno "verifica error" es generado. La direccin ... 708CH Esta rutina es usada por el "CLOAD" y "CSAVE" manipuladores de declaracin para evaluar un filename en el texto de programa. Los dos manipuladores usan proposiciones diferentes de entrada a fin de que un filename nulo est permitido para "CLOAD" pero no para "CSAVE". La cuerda del filename es evaluada (4C64H), su almacenamiento liberado (680FH) y la primera parte que seis personajes emularon para FILNAM. Si el filename es ms largo que seis personajes el exceso est ignorado. Si el filename es ms corto que seis personajes luego FILNAM es acolchado con espacios. La direccin ... 70B8H Esta rutina es usada por el "CLOAD" y "BLOAD" manipuladores de declaracin y para el repartidor el claro funciona (cundo el dispositivo es CAS y el modo es entrada) localizar un bloque de la identificacin en el casete. En la entrada el filename est en FILNAM y el tipo del archivo en registro C, D3H para un archivo de BASIC del tokenized (CLOAD), D0H para un EAH y archivo binario (BLOAD) para un archivo de ASCII (la CARGA o los datos). El motor del casete se enciende y el casete ledo hasta un encabezado es encontrado (72E9H). Cada escollo de la identificacin es prefijado por diez personajes de tipo del archivo as es que los personajes sucesivos son ledos de casete (72D4H) y comparados al tipo requerido del archivo. Si los personajes de tipo del archivo no hacen juego con transferencias de control de regreso al principio de la rutina para encontrar el siguiente encabezado. De otra manera los siguientes seis personajes son ledos adentro (72D4H) y estn posado en FILNAM. Si FILNAM no est lleno de espacios filename
El encuentro es intentado y el bloque de la identificacin ha sido encontrado. De otra manera los contenidos de FILNAM y FILNM2 son comparados para determinar si ste es el archivo requerido. Si el encuentro est sin xito, entonces y el Interpreter est de modo directo, el mensaje "Skip"" Es exhibido (710DH) seguido por el filename. El control luego se traslada de regreso al principio de la rutina para probar el siguiente
encabezado. Si el encuentro tiene xito, entonces y el Interpreter est de modo directo, el mensaje "Found"" Es exhibido (710DH) seguido por el filename y la rutina termina. La direccin ... 70FFH ste es el texto puro que el mensaje "encontr"" Terminado por un byte de cero. La direccin ... 7106H ste es el mensaje de texto puro "Skip"" Terminado por un byte de cero. La direccin ... 710DH A menos que CURLIN muestre al Interpreter estar de modo de programa que esta primera parte de rutina exterioriza (6678H) el mensaje a cuya direccin est suministrado en par de registro HL, seguido por los seis personajes contuvo en FILENAM2. La direccin ... 7125H Esta rutina es usada por el "CSAVE" y "BSAVE" manipuladores de declaracin y para el repartidor el claro funciona (cundo el dispositivo es CAS y el modo es salida) escribir un bloque de la identificacin para casete. En la entrada el filename est en FILNAM y el filetype en A de registro, D3H para un archivo de BASIC del tokenized (CSAVE), D0H para un EAH y archivo binario (BSAVE) para un archivo de ASCII (SALVE o datos). El motor del casete se enciende y un encabezado largo escrito para casete (72F8H) El byte del filetype est escrito a casete (72DEH) que diez veces siguieron por los primeros seis personajes de FILNAM (72DEH). El motor del casete est apagado por la rutina del estndar TAPOOF y la rutina termina. La direccin ... 713EH Esta rutina es usada por el "CSAVE" manipulador de declaracin para escribir al Program Text Area para casete como un soltero que los datos bloquean. Todos los punteros en el texto de programa se convierten de regreso a revestir nmeros (54EAH) para independizar la direccin del texto. El motor del casete se enciende y un encabezado pequeo escrito para casete (72F8H) El Program entero Text a Area le es luego escrito para casete un byte a la vez (72DEH) y seguido con siete bytes de cero (72DEH) como un exterminador. El motor del casete es entonces revuelto apagado por la rutina del estndar TAPOOF y la rutina termina.
- 181 5. EL INTRPRETE DE BASIC ROM La direccin ... 715DH Esta rutina es usada por el "CLOAD" y "CLOAD"? Los manipuladores de declaracin para leer unos datos del soltero el bloque en el Program Text Area o compararlo con los contenidos coetneos. En la entrada la A de registro contiene una bandera para distinguir entre las dos declaraciones, 00H para "CLOAD" y FFH para "CLOAD"?. El motor del casete se enciende y el primer encabezado localizado (72E9H). Los personajes sucesivos son ledos de casete (72D4H) y estn posado en el Program Text Area o comparados con los contenidos coetneos. Si la declaracin actual es "CLOAD"? La rutina terminar con FLAG NZ si el carcter del casete no equivale al carcter de memoria. Los datos diferentes sern ledos hasta diez sucesivos pone en el cero es encontrado. Esta secuencia de pone en el cero est compuesto del ltimo fin de la lnea de programa de carcter de la lnea, el enlace de fin y lo siete exterminador ponen en el cero adicionados por "CSAVE". Note que la rutina probablemente terminar durante esta
secuencia, cundo usada por "CLOAD"?, Como la comparacin de memoria est todava de progreso. Esto lleva las cuentas para la codificacin ms bien peculiar del "CLOAD"? El manipulador terminando condiciones. La direccin ... 7182H Esta mesa es usada por el repartidor al descifrar cdigos de funcin para el dispositivo GRP. Contiene la direccin del manipulador para cada uno de los cdigos de funcin, la mayora est en generadores de error de hecho: PARA FUNCIONAR 71B6H 0, abierto 71C2H 2, cerca 6E86H 4, aleatorio 7196H 6, salida secuencial 475AH 8, entrada secuencial 475AH 10, loc 475AH 12, lof 475AH 14, eof 475AH 16, fpos 475AH 18, putback La direccin ... 7196H ste es el repartidor rutina secuencial de salida para el dispositivo GRP. SCRMOD es primero a cuadros y una "llamada de funcin ilegal" error generado (475AH) si la pantalla est ya sea modo del texto. El carcter a la salida es tomado de transferencias de registro de la C y de control para la rutina del estndar GRPPRT. La direccin ... 71A2H Esta mesa es usada por el REPARTIDOR del DISPOSITIVO al descifrar cdigos de funcin para el dispositivo CRT. Contiene la direccin del manipulador para cada uno de los cdigos de funcin, la mayora est de hecho - 182 5. EL INTRPRETE DE BASIC ROM Los generadores de error: PARA FUNCIONAR 71B6H 0, abierto 71C2H 2, cerca 6E86H 4, aleatorio 71C3H 6, salida secuencial 475AH 8, entrada secuencial 475AH 10, loc 475AH 12, lof 475AH 14, eof 475AH 16, fpos 475AH 18, putback
La direccin ... 71B6H sta es la rutina de claro del repartidor para el CRT, LPT y dispositivos GRP. El modo requerido, en registro E, es comprobado y un "mal nombre del archivo" que el error gener (6E6BH) para la entrada o anexe. La direccin FCB es luego colocada en PTRFIL, el modo en el byte 0 del FCB y la rutina termina. Noto que la instruccin Z80 RET al final de esta rutina (71C2H) es la repartidora cerca rutina para el CRT, LPT y dispositivos GRP. La direccin ... 71C3H ste es el repartidor rutina secuencial de salida para el dispositivo CRT. El carcter a la salida es tomado de transferencias de registro de la C y de control para la rutina del estndar CHPUT. La direccin ... 71C7H Esta mesa es usada por el repartidor al descifrar cdigos de funcin para el dispositivo CAS. Contiene la direccin del manipulador para cada uno de los cdigos de funcin, varios es generadores de error: PARA FUNCIONAR 71DBH 0, abierto 7205H 2, cerca 6E86H 4, aleatorio 722AH 6, salida secuencial 723FH 8, entrada secuencial 475AH 10, loc 475AH 12, lof 726DH 14, eof 475AH 16, fpos 727CH 18, putback La direccin ... 71DBH sta es la rutina de claro del repartidor para el dispositivo CAS. Lo - 183 5. EL INTRPRETE DE BASIC ROM
La corriente yo el amortiguador de la / O sito, mantenido en el byte 6 del FCB, y CASPRV, que mantiene cualquier carcter del putback son ambos puestos en el cero. El modo requerido, suministrado en registro E, es examinado y un "mal archivo" que el error de "nombre" gener (6E6BH) para anexe o modos aleatorios. Para el modo de salida el bloque de la identificacin est luego escrito a casete (7125H) mientras para el modo de entrada que el bloque correcto de la identificacin est ubicado en el casete (70B8H). La direccin FCB es luego colocada en PTRFIL, el modo en el byte 0 del FCB y la rutina termina. La direccin ... 7205H ste es el repartidor cerca rutina para el dispositivo CAS.
El byte 0 del FCB es examinado y, si el modo fuera introduce en la computadora, CASPRV es puesto en el cero y la rutina termina. Lo dems diferente de lo que yo el amortiguador de la / O soy llenado del fin de personajes del archivo (1AH) y lo yo los contenidos del amortiguador de la / O escrito para casete (722FH). CASPRV es entonces puesto en el cero y la rutina termina. La direccin ... 722AH ste es el repartidor rutina secuencial de salida para el dispositivo CAS. El carcter a la salida es tomado de C de registro y mete en la siguiente colocacin libre lo yo el amortiguador de la / O (728BH). El byte 6 del FCB, lo yo el amortiguador de la / O sito, es entonces incrementado. Si lo que yo el amortiguador de la / O site se ha enrollado redondee para poner en el cero esto manera que hay doscientos cincuenta y seis personajes en lo yo el amortiguador de la / O y eso tiene que estar escrita para casete. El motor del casete se enciende, un encabezado pequeo es escrito para casete (72F8H) seguido por lo que yo el amortiguador de la / O contento (72DEH), y el motor est apagado por la rutina del estndar TAPOOF. La direccin ... 723FH ste es el repartidor rutina secuencial de entrada para el dispositivo CAS. CASPRV es primero a cuadros (72BEH) para determinar si contiene un carcter que ha sido putback, en cuyo caso sus contenidos sern poco cero. Si as es que la rutina termina con el carcter en A de registro. De otra manera lo yo el amortiguador de la / O sito es comprobado (729BH) para determinar si contiene cualquier carcteres. Si lo yo el amortiguador de la / O estoy vaco el motor del casete se enciende y el encabezado localizado (72E9H). Doscientos cincuenta y seis personajes son entonces ledos adentro (72D4H), el motor del casete cerrado por la rutina del estndar TAPION y lo yo el amortiguador de la / O sita reanudacin para poner en el cero. El carcter es luego tomado de la corriente yo colocacin del amortiguador de la / O y la colocacin incrementada. Finalmente el carcter es comprobado para ver si es el fin de carcter del archivo (1AH). Si no es, entonces la rutina termina con el carcter en Carolina Del Norte de registro de la A y de la BANDERA. De otra manera el fin de carcter del archivo es colocado en CASPRV, tan esa subsiguiente entrada secuencial demanda siempre devolver el fin de condicin del archivo, y la rutina termina con FLAG C.
- 184 5. EL INTRPRETE DE BASIC ROM La direccin ... 726DH sta es la rutina del eof del repartidor para el dispositivo CAS. El siguiente carcter es entrada (723FH) y colocado en CASPRV. Es entonces probado para el fin de cdigo del archivo (1AH) y el resultado coloc en DAC como un entero, cero para FFFFH falso, para verdadero. La direccin ... 727CH sta es la rutina del putback del repartidor para el dispositivo CAS. El carcter es simplemente colocado en CASPRV para ser recogido en la siguiente peticin secuencial de entrada. La direccin ... 7281H Esta rutina es usada por la funcin del espacio cerrado del repartidor a comprobar si hay cualquier personajes en lo yo el amortiguador de la / O y luego ponen en el cero lo yo el byte de colocacin del amortiguador de la / O en el FCB.
La direccin ... 728BH Esta rutina est usada por el repartidor funcin secuencial de salida para colocar el carcter en A de registro en lo yo el amortiguador de la / O en la corriente yo el amortiguador de la / O sito, lo cual es entonces incrementada. La direccin ... 729BH Esta rutina est usada por el repartidor funcin secuencial de entrada para coleccionar el carcter en la corriente yo colocacin del amortiguador de la / O, lo cual es entonces incrementada. La direccin ... 72A6H Esta mesa es usada por el repartidor al descifrar cdigos de funcin para el dispositivo LPT. Contiene la direccin del manipulador para cada uno de los cdigos de funcin, la mayora est en generadores de error de hecho: PARA FUNCIONAR 71B6H 0, abierto 71C2H 2, cerca 6E86H 4, aleatorio 72BAH 6, salida secuencial 475AH 8, entrada secuencial 475AH 10, loc 475AH 12, lof 475AH 14, eof 475AH 16, fpos 475AH 18, putback La direccin ... 72BAH ste es el repartidor rutina secuencial de salida para el LPT - 185 5. EL INTRPRETE DE BASIC ROM
El dispositivo. El carcter a la salida es tomado de transferencias de registro de la C y de control para la rutina del estndar OUTDLP. La direccin ... 72BEH Esta rutina est usada por el repartidor funcin secuencial de entrada para comprobar si un carcter del putback existe en CASPRV, y en caso de que no devolver Z Flag. CASPRV diferente es puesto en el cero y el carcter probado para ver si es el fin de carcter del archivo (1AH). En caso de que no regresa con el carcter en A de registro y FLAG NZ, Carolina Del Norte. De otra manera el fin de carcter del archivo es regresado a CASPRV y los ingresos de rutina con FLAG Z, C. La direccin ... 72CDH
Esta rutina es usada por las funciones diversas del repartidor a comprobar si el modo en E de registro es anexe, si as es que un "mal nombre del archivo" error es generado (6E6BH). La direccin ... 72D4H Esta rutina es usada por las funciones diversas del repartidor para leer un carcter del casete. El carcter es ledo por la rutina del estndar TAPIN y un "dispositivo yo que el error de la / O" gener (73B2H) si FLAG C es devuelto. La direccin ... 72DEH Esta rutina es usada por las funciones diversas del repartidor para escribir un carcter para casete. El carcter est escrito por la rutina del estndar TAPOUT y un "dispositivo yo que el error de la / O" gener (73B2H) si FLAG C es devuelto. La direccin ... 72E9H Esta rutina es usada por las funciones diversas del repartidor para encender el casete motor para la entrada. El motor se enciende por la rutina del estndar TAPION y un "dispositivo yo que el error de la / O" gener (73B2H) si FLAG C es devuelto. La direccin ... 72F8H Esta rutina es usada por las funciones diversas del repartidor para encender el casete motor para la salida, el control simplemente se traslada para la rutina del estndar TAPOON. La direccin ... 7304H Esta rutina est usada por el punto Interpreter Mainloop "Oklahoma", el "fin" manipulador de declaracin y la rutina cristalina en la carrera para cerrar la impresora. PRTFLG es primero LPTPOS puestos en el cero y luego probados para ver si cualquier personajes han sido salida pero izquierda pendiendo en el amortiguador de la lnea de la impresora. Si as un RETORNO DE CARRO, una secuencia LF es expedido para sonrojar la impresora y LPTPOS puesto en el cero.
La direccin ... 7323H Esta rutina emite un RETORNO DE CARRO, una secuencia LF para el dispositivo de salida en uso en estos momentos por la rutina del estndar OUTDO. LPTPOS o TTYPOS es entonces puesto en el cero dependiente ya sea la impresora o la pantalla es activa. La direccin ... 7347H Esta rutina es usada por el Evaluatodor Factor para ejercer al "INKEY$" funcin. La condicin del amortiguador del teclado es examinada por la rutina del estndar CHSNS. Si el amortiguador est vaco que la direccin de un descriptor nulo falso de la cuerda es devuelta en DAC. De otra manera el siguiente carcter es ledo del amortiguador del teclado por la rutina del estndar CHGET. Despus de comprobar eso suficiente espacio est disponible (6625H) el carcter es emulado para el String Storage Area y el resultado que el descriptor cre (6821H). La direccin ... 7367H
Esta rutina es usada por la "lista" manipulador de declaracin para devolver un carcter para el dispositivo de salida en uso en estos momentos por la rutina del estndar OUTDO. Si el carcter es un cdigo LF luego un cdigo de RETORNO DE CARRO es tambin expedido. La direccin ... 7374H Esta rutina es usada por el Interpreter Mainloop para coleccionar una lnea de texto cuando la entrada est de uno yo el amortiguador de la / O en vez del teclado, esto es cuando una "carga" declaracin es activa. Los personajes son secuencialmente entrada (6C71H) y colocado en BUF hasta que BUF se llena, un RETORNO DE CARRO es detectado o el fin de archivo es cumplido. Todos los personajes son aceptados con la excepcin de los cdigos LF que son limpiados con un filtro. Si BUF se llena o un RETORNO DE CARRO es detectado, entonces la rutina simplemente devuelve la lnea para el Mainloop. Si el fin de archivo es alcanzado mientras algunos personajes estn en BUF la lnea es devuelta al Mainloop. Cuando el fin de archivo es cumplido sin personajes en BUF luego yo amortiguador de la / O 0 estoy cerrado (6D7BH) y FILNAM al que se dio jaque para determinar si andado en automvil es requerido. Si no el control regresa al Interpreter "Oklahoma" apunte (411EH). De otra manera el sistema es aclarado (629AH) y control se traslada para el Runloop (4601H) para ejecutar el programa. La direccin ... 73B2H ste es el "dispositivo yo" el generador de "error de la / O". La direccin ... 73B7H ste es el manipulador "motor" de declaracin. Si ningn operand es, entonces las transferencias presentes de control para la rutina del estndar STMOTR con FFH de adentro registran UNO. Si la seal "apagada" (EBH) sigue, entonces las transferencias de control con 00H de adentro registran UNO. Si el "ON" seal (95H) entiende, entonces las transferencias de control con 01H de adentro registran UNO.
La direccin ... 73CAH ste es el manipulador "atinado" de declaracin. El nmero de registro operand, cul debe estar menos de catorce, es evaluado (521CH) y colocado en A de registro. El operand de datos es evaluado y la mordida reanudacin 7 determinada, mordida 6 para evitar alterar al ayudante PSG yo los modos del puerto de la / O. La direccin ... 73E4H ste es un solo espacio de ASCII usado por el "juego" manipulador de declaracin para reemplazar un operand nulo de la cuerda con un que cuerda del espacio vaco de carcter. La direccin ... 73E5H ste es el "juego" manipulador de declaracin. La direccin del "juego" mesa de orden en 752EH es colocada en MCLTAB para el analizador gramatical de lenguaje de macro y PRSCNT puesto en el cero. La primera cuerda operand, cul es obligatoria, es evaluada (4C64H), su almacenamiento liberado (67D0H) y su largo y direccin colocada en VCBA en los bytes 2, 3 y 4. El puntero de la pila del canal es en el que se puso las iniciales para VCBA + 33 y est posado en VCBA en los bytes 5 y 6 ' Si el ms texto est presente en La declaracin que este proceso
est repetido para B de voces y C hasta un mximum de tres operands ha sido evaluada, despus de sta un" error de Sintaxis " es generado (4055H). Si hay menos de tres presente de operands de la cuerda, entonces un fin de marca de la cola (FFH) es colocado en la cola (7507H) de cada voz sin uso. La A de registro es entonces puesta en el cero, a hacer una seleccin sonoriza UNO, y el control cae en el mainloop de juego. La direccin ... 744DH ste es el mainloop de juego. El nmero de bytes libres en la cola en uso en estos momentos es comprobado (7521H) y, si menos de ocho resto de bytes, la siguiente voz es seleccionada (74D6H) para evitar en espera de la cola vaciarse. El largo restante de la cuerda del operand es luego tomado del amortiguador de voz en uso en estos momentos y, si los bytes de cero quedan ser a los que se analiz gramaticalmente, el lazo otra vez saltos para la siguiente voz (74D6H). De otra manera el largo coetneo de la cuerda y direccin son tomados del amortiguador de voz y estn posado en MCLLEN y MCLPTR para el analizador gramatical de lenguaje de macro. Los contenidos viejos de la pila son emulados del amortiguador de voz para la pila Z80 (6253H), MCLFLG es control y poco cero hecho se traslada para el analizador gramatical de lenguaje de macro (56A2H). El analizador gramatical de lenguaje de macro normalmente escudriar a lo largo de la cuerda, usando el "juego" manipuladores de orden de declaracin, hasta que la cuerda est agotada. Sin embargo, si una cola de msica se llena arriba durante la generacin de la nota, entonces una terminacin anormal sea a la que se hizo retroceder al juego mainloop (748EH) a fin de que la siguiente voz puede ser tramitada fuera en espera de la cola para vaciarse. Cuando el control devuelve normalmente un fin de marca de la cola es colocado en la cola en uso en estos momentos
- 188 5. EL INTRPRETE DE BASIC ROM (7507H) y PRSCNT es incrementado para mostrar el nmero de instrumentos de cuerda completados. Si el control regresa anormalmente luego cualquier cosa dej en la pila Z80 es copiado en el amortiguador de voz (6253H) en uso en estos momentos. Por la naturaleza recursiva del analizador gramatical de lenguaje de macro donde la "X" orden est involucrada puede haber un nmero de cuatro descriptores de la cuerda de byte, marcando el punto donde la cuerda original estaba suspendida, izquierda en la pila Z80 en la terminacin. Salvo la pila los contenidos en el amortiguador de voz significan que pueden estar recuperados cuando el lazo tiene tiempo para esa voz otra vez. Note eso como haya slo diecisis bytes disponibles en cada amortiguador de voz una "llamada ilegal de funcin" error son generados (475AH) si demasiados restos de datos en la pila. Esto ocurrir cuando una cola se llena hasta el tope y "X" mltiple, anidada rdenes existe, por ejemplo: 10 A$ "XB$"" 20 B$ "XC$"" 30 C$ "XD$"" 40 D$ STRING$ (150, "uno") 50 JUEGAN CONTRA A$ Parece un problema no resuelto en el software leve en este pasaje como slo quince bytes de datos de la pila estn permitidos, en lugar de eso de diecisis, antes de que un error sea generado. Cuando los ingresos de control del analizador gramatical de lenguaje de macro registran UNO
es incrementado para seleccionar la siguiente voz para ir en procesin. Cundo todas las tres voces han sido INTFLG tratado es al que se dio jaque y, si CTRL-STOP ha sido detectado por ah lo interrumpe transferencias del manipulador, de control para la rutina del estndar GICINI para detener toda msica y terminar. Asumir mordi 7 de PRSCNT muestran as de ser el paso de primera parte a travs del mainloop, esto es ninguna voz ha por ahora sido suspendida por una cola llena, PLYCNT es incrementado e interrumpe dequeueing echado a andar por la rutina del estndar STRTMS. PRSCNT es entonces a cuadros para determinar el nmero de instrumentos de cuerda completados por el analizador gramatical de lenguaje de macro. Si todo tres instrumentos de cuerda del operand han sido completados, entonces el manipulador termina, transferencias diferentes de control de regreso al principio del mainloop de juego para intentar de nuevo cada voz. La direccin ... 7507H Esta rutina es usada por el "juego" manipulador de declaracin para colocar un fin de marca de la cola (FFH) en la cola en uso en estos momentos por la rutina del estndar PUTQ. Si la cola est llena, entonces espera hasta que el espacio se haga disponible. La direccin ... 7521H Esta rutina es usada por el "juego" manipulador de declaracin a comprobar cunto restos de espacio en la cola en uso en estos momentos por la rutina del estndar LFTQ. Si menos de ocho bytes se queda (el paquete posible ms grande de datos de msica tiene siete bytes de largo), entonces FLAG C es devuelto. - 189 5. EL INTRPRETE DE BASIC ROM La direccin ... 752EH Esta mesa contiene las cartas vlidas de orden y las direcciones asociadas para el "juego" rdenes de declaracin. Esas rdenes que toman un parmetro, y consecuentemente han mordido 7 colocado en la mesa, es mostrado con un asterisco: CMD PARA Un 763EH B 763EH C 763EH D 763EH E 763EH F 763EH G 763EH M * 759EH V * 7586H S * 75BEH N * 7621H O * 75EFH * el 75FCH de interrogacin T * 75E2H L * 75C8H X 5782H La direccin ... 755FH
Esta mesa es usada por la "A" de declaracin de "juego" para "G" manipulador de orden para traducir un nmero de la nota de cero a catorce para un offset en la mesa de divisor de tono en 756EH. La nota misma, en vez del nmero de la nota, es mostrada debajo con cada valor de offset: 16 ... Uno 18 ... Uno 20 ... Uno + O B 22 ... B O C 00 ... B 00 ... C 02 ... C + O D 04 ... D 06 ... D + O E08 ... E O F 10 ... E 10 ... F 12 ... F + O G 14 ... G 16 ... G La direccin ... 756EH Esta mesa contiene las doce constantes de divisor PSG requeridas producir los tonos de octava 1. Para cada constante - 190 5. EL INTRPRETE DE BASIC ROM La nota correspondiente y frecuencia son exteriorizadas: 3421 ... C 32.698 Hz 3228 ... C + 34.653 Hz 3047 ... D 36.712 Hz 2876 ... D + 38.895 HZ 2715 ... E 41.201 Hz 2562 ... F 43.662 Hz 2419 ... F + 46.243 Hz 2283 ... G 48.997 Hz 2155 ... G + 51.908 Hz 2034 ... Un 54.995 Hz 1920 ... Un + 58.261 Hz 1812 ... B 61.773 Hz La direccin ... 7586H Esto es el "juego" manipulador de orden de declaracin "V". El parmetro, con un valor predeterminado de ocho, es colocado en byte 18 del amortiguador de voz en uso en estos momentos sin alterar bit 6 de los contenidos existentes. Ninguno de los datos de msica son generados. La direccin ... 759EH
Esto es el "juego" manipulador de orden de declaracin "M". El parmetro, con un valor predeterminado de doscientos cincuenta y cinco, es comparado con el perodo existente de modulacin contenido en bytes 19 y 20 del amortiguador de voz en uso en estos momentos. Si son lo mismo la rutina termina sin accin. De otra manera el perodo nuevo de modulacin es colocado en el amortiguador de voz y set 6 mordido en el byte 18 del amortiguador de voz a sealar que el valor nuevo debe ser incorporado en el siguiente paquete de datos de msica produjo. Ninguno de los datos de msica son generados. La direccin ... 75BEH Esto es el "juego" manipulador de orden de declaracin "S". El parmetro es colocado en byte 18 del amortiguador de voz en uso en estos momentos y el bit 4 del mismo byte se sediment sealar que el valor nuevo debe ser incorporado en el siguiente paquete de datos de msica producido. Ninguno de los datos de msica son generados. Por las caractersticas PSG la forma y parmetros de volumen son mutuamente exclusivos as es que el mismo byte de los amortiguadores de voz sirve para ambos. La direccin ... 75C8H Esto es el "juego" manipulador de orden de declaracin "L". El parmetro, con un valor predeterminado de cuatro, es colocado en byte 16 del amortiguador de voz en uso en estos momentos donde es usado en la computacin de tener xito duraciones de la nota. Ninguno de los datos de msica son generados. La direccin ... 75E2H Esto es el "juego" manipulador de orden de declaracin "T". Lo - 191 5. EL INTRPRETE DE BASIC ROM El parmetro, con un valor predeterminado de ciento veinte, es colocado en byte 17 del amortiguador de voz en uso en estos momentos donde ser usado en la computacin de tener xito duraciones de la nota datos de msica ho es generado. La direccin ... 75EFH Esto es el "juego" manipulador de orden de declaracin "O". El parmetro, con un valor predeterminado de cuatro, es colocado en byte 15 del amortiguador de voz en uso en estos momentos donde es usado en la computacin de tener xito frecuencias de la nota. Ninguno de los datos de msica son generados. La direccin ... 75FCH ste es la "interrogacin" de declaracin de "juego" manipulador de orden. El parmetro de largo, con un valor predeterminado de cuatro, se queda en par de registro Delaware y un valor de divisor de tono de cero colocado en par de registro HL. El valor existente de volumen es tomado de byte 18 del amortiguador de voz en uso en estos momentos, por ahora repuesto con un valor de cero y un control transferido para el generador de la nota (769CH). La direccin ... 7621H Esto es el "juego" manipulador de orden de declaracin "N". El parmetro obligatorio es primero examinado, si es cero un descanso es generado (760BH). Si es mayor que noventa y seis que un error "ilegal de llamada de funcin" es generado (475AH). De otra manera doce son
repetidamente sustrados del nmero de la nota hasta el poco flujo para sacar un nmero de octava de uno a nueve en E de registro y un nmero de la nota de cero a once en C de registro. El control luego se traslada para el generador de la nota (7673H). La direccin ... 763EH sta es la "A" de declaracin de "juego" para "G" manipulador de orden. La carta de la nota se convierte primero en un nmero de la nota de cero para catorce, sta expandi rango siendo menester por la redundancia implcita en la notacin. La mesa en 755FH se usa luego para obtener el offset en la mesa de divisor de tono y la constante divisionista para la nota colocada en par de registro Delaware. El valor de octava es tomado de byte 15 del amortiguador de voz en uso en estos momentos y la constante divisionista disminuida a la mitad hasta que la octava correcta sea cumplida. El operand de la cuerda es entonces examinado directamente (56EEH) para determinar si una nota de arrastre largo parmetro existe. Si as es que es convertido (572FH) y colocado en C de registro. Si ningn parmetro existe, entonces el largo predeterminado es tomado de byte 16 del amortiguador de voz en uso en estos momentos. La duracin de la nota es entonces computada de: La duracin (Interrumpen hace tictac) = 12,000 / (LENGTH*TEMPO) Con el largo normal el valor (4) y el tiempo aprecian (120) ste da una duracin de la nota de veinticinco interrumpa tictacs de 20 ms cada uno o 0.5 segundos. El operand de la cuerda es entonces examinado - 192 5. EL INTRPRETE DE BASIC ROM
(56EEH) para rezagarse "" Los personajes y, para cada uno, la duracin multiplicado por uno y una mitad. Finalmente la duracin resultante es comprobada y, si est menos de cinco interrumpa tictacs, es reemplazado con un valor de cinco. As la nota ms pequea que puede ser generada en una mquina UK es 0.10 segundos cualquier cosa el tiempo o el largo de la nota. El paquete de datos de msica, cul estarn tres, cinco de o siete bytes de largo, es luego ensamblado en bytes 8 para 14 del amortiguador de voz en uso en estos momentos antes de colocar eso en la cola. La duracin es colocada en bytes 8 y 9 del amortiguador de voz. El volumen y el byte de la bandera son tomados de byte 18 y colocados en el byte 10 del amortiguador de voz con el set 7 mordido para indicar un cambio de volumen para lo interrumpa sacar de la cola rutina. Si mordi 6 del byte del libro estn colocados luego el perodo de modulacin es tomado de bytes 19 y 20 y se suma al paquete de datos en los bytes 11 y 12. Si el valor de divisor de tono es poco cero luego se agrega para el paquete de datos en los bytes 11 y 12 (sin un perodo de modulacin) o los bytes 13 y 14 (con un perodo de modulacin). Finalmente la cuenta de byte es mixta en los tres aicos ms altos de byte 8 del amortiguador de voz para completar la preparacin del paquete de datos de msica. Si el valor de divisor de tono es cero, entonces indicando un descanso, los contenidos de SAVVOL estn recuperados para el byte 18 del amortiguador esttico. El paquete de datos de msica es luego colocado en la cola en uso en estos momentos por la rutina del estndar PUTQ y el nmero de permanecer libre de bytes inspeccion (7521H). Si menos de ocho bytes se queda, entonces controle transferencias directamente para el "juego" el manipulador de declaracin (748EH), el control diferente regresa normalmente para el analizador gramatical de lenguaje de macro.
La direccin ... 7754H sta es la sola constante de precisin 12,000 usada en la computacin de duracin de la nota. La direccin ... 7758H ste es el manipulador "puesto" de declaracin. La B de registro est colocada para 80H y el control cae en el "GET" manipulador de declaracin. La direccin ... 775BH ste es el "GET" manipulador de declaracin. La B de registro es puesta en el cero, para distinguir a "GET" de "PUT" y la siguiente seal de programa examinada. El control luego se traslada para el "bloque de objetos movibles PUESTO" manipulador de declaracin (7AAFH) o el manipulador de declaracin de BASIC Disk "GET/PUT" (6C35H). La direccin ... 7766H ste es el "LOCATE" manipulador de declaracin. Si una coordenada de la columna est presente, entonces es evaluada (521CH) y colocada en registro D, de otra manera la columna en uso en estos momentos es tomada de CSRX. Si
Una coordenada de la fila est presente que es evaluada (521CH) y colocada en registro E, de otra manera la fila en uso en estos momentos es tomada de CSRY. Si un operand del interruptor del cursor existe, entonces es evaluada (521CH) y A de registro cargada con 78H para un cero operand (COMPLETAMENTE) y 79H para cualquier poco cero operand (ADELANTE). El cursor es entonces cambiado devolviendo a ESC, 78H/79H, "5" por la rutina del estndar OUTDO. La fila y coordenadas de la columna son colocadas en par de registro HL y la colocacin del cursor set por la rutina del estndar POSIT. La direccin ... 77A5H ste es el "alto ADELANTE / FUERA DE / el ALTO" el manipulador de declaracin. La direccin de byte de estado TRPTBL del dispositivo es colocada en transferencias de registro del par HL y de control para el "ON/OFF/STOP" rutina (77CFH). La direccin ... 77ABH ste es el "bloque de objetos movibles ADELANTE / FUERA DE / el ALTO" el manipulador de declaracin. La direccin de byte de estado TRPTBL del dispositivo es colocada en transferencias de registro del par HL y de control para el "ON/OFF/STOP" rutina (77CFH). La direccin ... 77B1H ste es el "intervalo ADELANTE / FUERA DE / el ALTO" el manipulador de declaracin. Como no hay "el INTERVALO" especfico la seal (controle transferencias aqu cuando un "INT" seal es encontrado) un cheque es primero hecho en el texto de programa para los personajes "E" y "interrogacin" luego el "VAL" seal (94H). La direccin de byte de estado TRPTBL del dispositivo es colocada en transferencias de registro del par HL y de control para el "ON/OFF/STOP" rutina (77CFH).
La direccin ... 77BFH ste es el "STRIG ADELANTE / FUERA DE / el ALTO" el manipulador de declaracin. El nmero del gatillo, de cero para cuatro, es evaluado (7C08H) y la direccin del TRPTBL del dispositivo que el byte de estado coloc en par de registro HL. El "ON/OFF/STOP" seal es examinado y el byte de estado TRPTBL modificado consecuentemente (77FEH). El control luego se traslada directamente para el Runloop (4612H) para evitar prueba para antes de interrumpe hasta el fin de la siguiente declaracin. La direccin ... 77D4H sta es la "llave (n) ON / FUERA DE / el ALTO" el manipulador de declaracin. El nmero crucial, de uno para diez, es evaluado (521CH) y la direccin del TRPTBL de los dispositivos que el byte de estado coloc en par de registro HL. El "ON/OFF/STOP" seal es examinado y el byte de estado TRPTBL modificado consecuentemente (77FEH). El bit 0 del byte de estado TRPTBL, el ON mordi, es entonces copiado en la entrada correspondiente en FNKFLG para el uso durante lo interrumpen transferencias del keyscan y de control directamente para el Runloop (4612H).
- 194 5. EL INTRPRETE DE BASIC ROM La direccin ... 77FEH Esta rutina revisa en busca de la presencia de uno de lo interrumpa cambiar seales y transfiere control para la rutina apropiada: "Adelante" (631BH), "fuera" (632BH) o "alto" (6331H). Si ninguna seal est presente, entonces un "error de sintaxis" es generado (4055H). La direccin ... 7810H Esta rutina es usada por ah lo "en DEVICE GOSUB" manipulador de declaracin (490DH) para comprobar el texto de programa para una seal del dispositivo. A menos que ninguna de las seales del dispositivo son presentes, en cuyo caso la C Flag es devuelta, TRPTBL del dispositivo que el nmero de entrada es devuelto en B de registro y el operand admisible mximo de nmero de la lnea incluyen C de registro: LOS NMEROS DEL DISPOSITIVO TRPTBL#LINE LLAVE 00 10 ALTO 10 01 EL BLOQUE DE OBJETOS MOVIBLES 11 01 STRIG 12 05 EL INTERVALO 17 01 Adicionalmente, para "el INTERVALO" slo, el operand de intervalo es evaluado (542FH) y colocado en INTVAL e INTCNT. La direccin ... 785CH Esta rutina es usada por ah lo "en DEVICE GOSUB" manipulador de declaracin (490DH) para colocar la direccin de una lnea de programa en TRPTBL. El nmero de entrada TRPTBL, suministrado en registro B, es multiplicado por tres y se suma a la mesa bajo para apuntar hacia
la entrada pertinente. La direccin, suministrado en par de registro Delaware, est luego posada all el segundo LSB de primera parte, MSB. La direccin ... 786CH ste es el manipulador "crucial" de declaracin. Si el siguiente carcter es, entonces cualquier cosa aparte de la "lista" control de la seal (93H) se traslada para la "n CRUCIAL" manipulador de declaracin (78AEH). Cada uno de los instrumentos de cuerda de diez funciones de crucial son luego tomados de FNKSTR y exhibidos por la rutina del estndar OUTDO con un RETORNO DE CARRO, LF (7328H) despus de cada uno. El carcter DEL (7FH) o cualquier carcter de control ms pequeo que 20H es reemplazado con un espacio. La direccin ... 78AEH sta es la "n CRUCIAL", "teclee a (n) ON/OFF/STOP", "crucial de ADELANTE" y "teclee FUERA DE" manipulador de declaracin. Si el siguiente personaje del texto de programa est encendido "(" controle transferencias para la "llave (n) / FUERA DE / el ALTO" el manipulador de declaracin (77D4H). Si es, entonces un "ON" control de la seal (95H) se traslada para la rutina del estndar DSPFNK y si es una seal "apagada" (EBH) para la rutina del estndar ERAFNK. De otra manera la funcin - 195 5. EL INTRPRETE DE BASIC ROM
El nmero crucial es evaluado (521CH) y lo crucial la direccin FNKSTR coloc en par de registro Delaware ' El operand de la cuerda es evaluado (4C64H) y su almacenamiento liberado (67D0H ) ' Hasta quince personajes es emulado de la cuerda para FNKSTR y las colocaciones sin uso acolchadas con bytes de cero. Si un byte de cero es encontrado en el operand forme una serie, entonces una "llamada ilegal de funcin" error es generada (475AH). El control luego se traslada para la rutina del estndar FNKSB para actualizar el despliegue de la llave de funcin si es posibilitado. La direccin ... 7900H Esta rutina es usada por el Evaluatodor Factor para ejercer la funcin "de tiempo". Los contenidos de MOMENTITO son colocados en DAC como un solo nmero de precisin (3236H). La direccin ... 790AH Esta rutina es usada por el Evaluatodor Factor para ejercer al "CSRLIN" funcin. Los contenidos de CSRY son decremented y colocado en DAC como un entero (2E9AH). La direccin ... 7911H ste es el manipulador de declaracin "de tiempo". El operand es evaluado (542FH) y colocado en el MOMENTITO. La direccin ... 791BH Esta rutina es usada por el Evaluatodor Factor para ejercer el "juego" funcin. El operand numrico de seleccin del canal es evaluado (7C08H). Si esto es ponga en el cero, entonces los contenidos de MUSICF son colocados en DAC como un entero de cero de valor o FFFFH. De otra manera el nmero del canal se usa para hacer una seleccin el bit apropiado de MUSICF y esto es luego convertido a un entero como antes.
La direccin ... 7940H Esta rutina es usada por el Evaluatodor Factor para ejercer la "vara" funcin para un operand contenido en DAC. El nmero de la vara es comprobado (521FH) y pasado para la rutina del estndar GTSTCK en A de registro. El resultado es colocado en DAC como un entero (4FCFH). La direccin ... 794CH Esta rutina es usada por el Evaluatodor Factor para ejercer al "STRIG" funcin para un operand contenido en DAC. El nmero del gatillo es comprobado (521FH) y pasado para la rutina del estndar GTTRIG en A de registro. El resultado es colocado en DAC como un entero de cero de valor o FFFFH. La direccin ... 795AH Esta rutina es usada por el Evaluatodor Factor a aplicar lo
"PDL" funcione para un operand contenido en DAC. El nmero del remo es comprobado (521FH) y pasado para la rutina del estndar GTPDL en A de registro. El resultado es colocado en DAC como un entero (4FCFH). La direccin ... 7969H Esta rutina es usada por el Evaluatodor Factor para ejercer la "almohadilla" funcin para un operand contenido en DAC. El nmero de la almohadilla es comprobado (521F) y pasado para la rutina del estndar GTPAD en A de registro. El resultado es colocado en DAC como un entero para almohadillas 1, 2, 5 o 6. Para almohadillas 0, 3, 4 o 7 que el resultado es colocado en DAC como un entero de cero de valor o FFFFH. La direccin ... 7980H ste es el "color" manipulador de declaracin. Si un operand de color del primer plano existe, entonces es evaluado (521CH) y colocado en registro E, de otra manera el color actual del primer plano es tomado de FORCLR. Si un operand de color de fondo existe, entonces es evaluado (521CH) y colocado en registro D, de otra manera el color de fondo actual es tomado de BAKCLR. Si un operand fronterizo de color existe, entonces es evaluado (521CH) y colocado en BDRCLR. El color del primer plano es colocado en FORCLR y ATRBYT, el color de fondo en las transferencias BAKCLR y de control para la rutina del estndar CHGCLR para modificar al VDP. La direccin ... 79CCH ste es la "pantalla" manipulador de declaracin. Si un operand de modo existe, entonces es evaluado (521CH) y pasado para la rutina del estndar CHGMOD en A de registro. Si un operand de tamao de bloque de objetos movibles existe, entonces es evaluado (521CH) y colocado en aicos 0 y 1 de RG1SAV, la copia Workspace Area de VDP Mode Register 1. Los parmetros de bloque de objetos movibles VDP son entonces aclarados por la rutina del estndar CLRSPR. Si un operand crucial de chasquido existe, entonces es evaluado (521CH) y colocado en CLIKSW, cero para desactivar el chasquido y el poco cero para posibilitarlo. Si un operand de tasa de baudio existe, entonces es evaluado y la tasa de baudio se sedimentase (7A2DH). Si un operand de modo de la impresora existe, entonces es evaluado (521CH) y colocado en NTMSXP, cero para una impresora MSX y poco ponga en el cero para
una impresora general de propsito. La direccin ... 7A2DH Esta rutina se usa para ajustar la tasa de baudio del casete. El operand es evaluado (521CH) y cinco bytes copiados de CS1200 o CS2400 al PUNTO BAJO segn el caso. La direccin ... 7A48H ste es el "bloque de objetos movibles" manipulador de declaracin. Si el siguiente carcter es, entonces cualquier cosa aparte de un "$" control se traslada para el "bloque de objetos movibles ON/OFF/STOP" manipulador de declaracin (77ABH). SCRMOD es entonces a cuadros y una "llamada ilegal de funcin" que el error gener (475AH)
- 197 5. EL INTRPRETE DE BASIC ROM Si la pantalla est de Modo del 40x24 Text. El nmero del patrn de bloque de objetos movibles es evaluado y su posicin en el VRAM que el Sprite Pattern Table obtuvo (7AA0H). El operand de la cuerda es entonces evaluado (4C5FH) y su almacenamiento liberado (67D0H). El tamao de bloque de objetos movibles, obtenido por la rutina del estndar GSPSIZ, es comparado con el largo de la cuerda y, si la cuerda es ms corta que el bloque de objetos movibles, la entrada Sprite Pattern Table es primero llenada de pone en el cero por la rutina del estndar FILVRM. Los personajes son entonces copiados del cuerpo de la cuerda para el Sprite Pattern Table por la rutina del estndar LDIRVM hasta que la cuerda est agotada o el bloque de objetos movibles est lleno. Si la cuerda es ms larga que el bloque de objetos movibles tamao cualquier personajes excedentes est ignorado. La direccin ... 7A84H Esta rutina es usada por el Evaluatodor Factor para ejercer al "SPRITE$" funcin. El nmero del patrn de bloque de objetos movibles es evaluado y su posicin en el VRAM que el Sprite Pattern Table obtuvo (7A9FH). El tamao de bloque de objetos movibles, obtenido por la rutina del estndar GSPSIZ, es luego colocado en par de registro BC para controlar el nmero de bytes emulados. Despus de comprobar eso suficiente espacio est disponible en el String Storage Area (6627H) el patrn de bloque de objetos movibles es copiado de VRAM por la rutina del estndar LDIRMV y el resultado que el descriptor cre (6654H). Note eso como ningn cheque est hecho en el modo de la pantalla durante esta funcin algunos efectos secundarios interesantes pueden ser encontrados, pueden ver debajo. La direccin ... 7A9FH Esta rutina es usada por el "SPRITE$" declaracin y la funcin para localizar un patrn de bloque de objetos movibles en el VRAM Sprite Pattern Table. El operand de nmero del patrn es evaluado (7C08H) y pasado para la rutina del estndar CALPAT en A de registro. La direccin del patrn es colocada en par de registro Delaware y la rutina termina. Noto que ningn cheque est hecho en la magnitud de nmero del patrn para el bloque de objetos movibles discrepante dimensiona. El patrn numera hasta doscientos cincuenta y cinco est aceptado aun adentro modo de bloque de objetos movibles del 16x16 cundo el nmero mximo del patrn debera tener sesenta y tres aos de edad. Como un resultado del que VRAM se ocupa ms gran que 3FFFH se producir cul envolver alrededor de en VRAM bajo. Con el "SPRITE$" declaracin esto corromper al Character Generator Table, por ejemplo:
10 OCULTAN 3,2 20 SPRITE$ (0) = STRING$ (32,255) 30 PONEN BLOQUE DE OBJETOS MOVIBLES 0, (0,0),, 0 40 SPRITE$ (65) = STRING$ (32,255) 50 GOTO 50 Lo antedicho mete un bloque de objetos movibles real en la izquierda mxima de la pantalla y luego usa una declaracin ilegal en lnea 40 para corromper al VRAM justamente a la derecha de l. El "SPRITE$" funcin tambin puede ser manipulado de este modo y, ya que no hay cheque de modo de la pantalla, hasta treinta y dos bytes del Name Table puede ser ledo en 40x24 - 198 5. EL INTRPRETE DE BASIC ROM El texto Mode, por ejemplo: 10 OCULTAN 0,2 20 PRINT"something " 30 A$ SPRITE$ (64) 40 ESCRIBEN EN LETRAS DE IMPRENTA a A$ La direccin ... 7AAFH ste es el "bloque de objetos movibles GET/PUT" manipulador de declaracin, el control es transferido aqu del "GET/PUT" general manipulador de declaracin (775BH). La B de registro es primero a cuadros para hacer seguro que la declaracin es "PUT" y una "llamada de funcin ilegal" error generado (475AH) si de otra manera. SCRMOD es entonces a cuadros y una "llamada de funcin ilegal" error generado (475AH) si la pantalla est de Modo del 40x24 Text. El nmero de bloque de objetos movibles operand, de cero para treinta y uno, es evaluado (521CH) y pasado para la rutina del estndar CALATR para localizar el bloque de atributo de cuatro bytes en el Sprite Attribute Table. Si un operand coordinado existe, entonces es evaluado y la coordenada de la X colocase en par de registro BC, la Y coordinada en par de registro Delaware (579CH). La coordenada de la Y a LSB le es escado para el byte 0 del bloque de atributo en VRAM por la rutina del estndar WRTVRM. El bit 7 de la coordenada de la X es entonces examinado para determinar si es negativa, esto es fuera de la izquierda lateral de la pantalla. Si tan treinta y dos se agrega para la coordenada de la X y la B de registro est colocada para 80H para se sediment, entonces el reloj tempranero mordi en el bloque de atributo. Para el ejemplo una X coordinada de - 1 (FFFFH) se variara para + 31 con un reloj tempranero. La coordenada de la X a LSB le es luego escado para el byte 1 del bloque de atributo por la rutina del estndar WRTVRM. El byte 3 del bloque de atributo es ledo adentro por la rutina del estndar RDVRM, el bit tempranero nuevo del reloj es en el que se mezcl y es luego escrito hacia atrs para VRAM por la rutina del estndar WRTVRM. Si un operand de color est presente, entonces es evaluado (521CH), el byte 3 del bloque de atributo es ledo adentro por la rutina del estndar RDVRM que el cdigo nuevo de color es mixto en el cuatro bits mnimo y eso es contestado por escrito a VRAM por la rutina del estndar WRTVRM. Si un operand de nmero del patrn existe, entonces es evaluado (521CH) y comprobado para la
magnitud en contra del bloque de objetos movibles actual que el tamao provey por la rutina del estndar GSPSIZ. El nmero admisible mximo del patrn es doscientos cincuenta y cinco para bloques de objetos movibles del 8x8 y sesenta y tres para bloques de objetos movibles del 16x16. El nmero del a patrn le es escado para el byte 2 del bloque de atributo por la rutina del estndar WRTVRM y el manipulador termina. La direccin ... 7B37H ste es el "VDP" manipulador de declaracin. El nmero de registro operand, de cero para siete, es evaluado (7C08H) seguido por el datos operand (521CH). El nmero de registro es al que se estuvo agotado registro C, el valor de datos en B de registro y el control transferido para la rutina del estndar WRTVDP. - 199 5. EL INTRPRETE DE BASIC ROM La direccin ... 7B47H Esta rutina es usada por el Evaluatodor Factor para ejercer al "VDP" funcin. El nmero de registro operand, de cero para ocho, es evaluado (7C08H) y aadido para RGOSAV para hallar la imagen correspondiente de registro en el Workspace Area. La imagen de registro VDP es entonces leda y colocada en DAC como un entero (4FCFH). La direccin ... 7B5AH ste es el manipulador "bajo" de declaracin. El nmero de la mesa VDP operand, de cero para diecinueve, es evaluado (7C08H) seguido por la direccin bajo operand (4C64H). Despus de comprobar que la direccin bajo est menos de 4000H (7BFEH) el nmero de la mesa VDP se usa para hallar la entrada asociada en el filtrado posponga en 7BA3H. La direccin bajo es ANDed con la mscara y una "llamada de funcin ilegal" error generado (475AH) si cualquier aicos ilegales estn colocados. El nmero de la mesa VDP se agrega luego a TXTNAM para localizar la direccin bajo en uso en estos momentos en el Workspace Area y la nueva direccin bajo acomodada all. El nmero de la mesa VDP est dividido a las cinco para determinar cul de los cuatro modos de la pantalla la mesa pertenece para. Si esto equivale al modo coetneo de la pantalla la direccin bajo nueva es tambin escrito para el VDP (7B99H). La direccin ... 7B99H Esta rutina es usada por el manipulador "bajo" de declaracin para actualizar las direcciones de la base VDP. El modo coetneo de la pantalla, en A de registro, es examinado y el control se traslada para el SETTXT, SETT32, SETGRP o rutina del estndar SETMLT segn el caso. Noto que sta no es una inicializacin llena VDP y que la cuatro mesa en uso en estos momentos dirige la palabra (NAMBAS, CGPBAS, PATBAS y ATRBAS) cul son los unos realmente us por las rutinas de la pantalla, no est actualizada. Esto puede ser demostrado con lo siguiente, donde el Interpreter contina devolver para el viejo VRAM Name Table: 10 OCULTAN 0 20 BASAN (0) = y H400 30 PRINT"something " 40 FOR N = 1 TO 2000:DESPUS 50 BASAN (0) = 0 Note tambin que esta rutina contiene un problema no resuelto en el software. Mientras SETTXT sirve correctamente para 40x24 Text Mode, SETGRP sirve para 32x24 Text Mode y
SETMLT para Graphics Mode y el Multicolor Mode. Cualquier "base" declaracin por consiguiente debera ser inmediatamente seguido por una "pantalla" declaracin para realizar una inicializacin llena. La direccin ... 7BA3H Esta mesa de filtrado es usada por el manipulador "bajo" de declaracin para asegurar que slo las direcciones legales de la base VDP son aceptadas. Lo - 200 5. EL INTRPRETE DE BASIC ROM El nmero de la mesa y la variable correspondiente Workspace Area son exteriorizados con cada uno mscara: La MESA de la MSCARA 03FFH 00, TXTNAM 003FH 01, TXTCOL 07FFH 02, TXTCGP 007FH 03, TXTATR 07FFH 04, TXTPAT 03FFH 05, T32NAM 003FH 06, T32COL 07FFH 07, T32CGP 007FH 08, T32ATR 07FFH 09, T32PAT 03FFH 10, GRPNAM 1FFFH 11, GRPCOL 1FFFH 12, GRPCGP 007FH 13, GRPATR 07FFH 14, GRPPAT 03FFH 15, MLTNAM 003FH 16, MLTCOL 07FFH 17, MLTCGP 007FH 18, MLTATR 07FFH 19, MLTPAT La direccin ... 7BCBH Esta rutina es usada por el Evaluatodor Factor para ejercer la funcin "bajo". El nmero de la mesa VDP operand, de cero para diecinueve, es evaluado (7C08H) y aadido para TXTNAM para localizar la direccin bajo Area Workspace requerida. Esto es luego colocado en DAC como un solo nmero de precisin (3236H). La direccin ... 7BE2H ste es el "VPOKE" manipulador de declaracin. El operand de la direccin VRAM es evaluado (4C64H) y comprobado para asegurar que est menos de 4000H (7BFEH). El operand de datos es entonces evaluado (521CH) y pasado para la rutina del estndar WRTVRM en A de registro para escribir para la direccin requerida. La direccin ... 7BF5H
Esta rutina es usada por el Evaluatodor Factor para ejercer al "VPEEK" funcin para un operand contenido en DAC. El operand de la direccin VRAM es comprobado para asegurar est menos de 4000H (7BFEH). VRAM es entonces ledo por la rutina del estndar RDVRM y el resultado coloc en DAC como un entero (4FCFH). La direccin ... 7BFEH Esta rutina convierte a un operand numrico en DAC a un entero (2F8AH) y coloca ella en par de registro HL. Si el operand es - 201 5. EL INTRPRETE DE BASIC ROM
El igual para o ms gran que 4000H, y as fuera del rango admisible VRAM, una "llamada ilegal de funcin" error sea generada (475AH). La direccin ... 7C08H Esta rutina evala (521CH) un parenthesized operand numrico y la devuelve como un entero en A de registro. Si el operand es mayor que el mximo valor admisible inicialmente abastecido en A de registro una "llamada ilegal de funcin" error es generada (475AH). La direccin ... 7C16H ste es el "DSKO$" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C1BH ste es el manipulador "determinado" de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C20H ste es el "nombre" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C25H ste es la "presa" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C2AH ste es el "IPL" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C2FH ste es la "copia" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C34H ste es el "CMD" manipulador de declaracin. Una "llamada ilegal de funcin" error es
generada (475AH) en una mquina estndar MSX. La direccin ... 7C39H Esta rutina es usada por el Evaluatodor Factor para ejercer al "DSKF" funcin para un operand contenido en DAC. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX.
La direccin ... 7C3EH Esta rutina es usada por el Evaluatodor Factor para ejercer al "DSKI$" funcin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C43H Esta rutina es usada por el Evaluatodor Factor para ejercer al "ATTR$" funcin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C48H ste es el "LSET" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C4DH ste es el "RSET" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. L La direccin ... 7C52H ste es el "campo" manipulador de declaracin. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C57H Esta rutina es usada por el Evaluatodor Factor para ejercer al "MKI$" funcin para un operand contenido en DAC. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C5CH Esta rutina es usada por el Evaluatodor Factor para ejercer al "MKS$" funcin para un operand contenido en DAC. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C61H Esta rutina es usada por el Evaluatodor Factor para ejercer al "MKD$" funcin para un operand contenido en DAC. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX.
La direccin ... 7C66H Esta rutina es usada por el Evaluatodor Factor para ejercer al "CVI" funcin para un operand contenido en DAC. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX.
La direccin ... 7C6BH Esta rutina es usada por el Evaluatodor Factor para ejercer a los "CVS" funcin para un operand contenido en DAC. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C70H Esta rutina es usada por el Evaluatodor Factor para ejercer al "CVD" funcin para un operand contenido en DAC. Una "llamada ilegal de funcin" error es generada (475AH) en una mquina estndar MSX. La direccin ... 7C76H Esta rutina completa la inicializacin que se impulsa arriba. En este punto el Workspace entero Area es puesto en el cero y slo EXPTBL y SLTTBL han sido inicializados. Una pila temporal est colocada en F376H y todos los ciento doce ganchos (560 bytes) llenados de Z80 RET opcodes (C9H). HIMEM est listo para F380H y la RAM mnima que la posicin encontr (7D5DH) y coloc en RAZ. Los cien cuarenta y cuatro bytes de datos comenzando en 7F27H son emulados para el Workspace Area de F380H para F40FH Los instrumentos de cuerda de la llave de funcin son en los que se puso las iniciales por la rutina del estndar INIFNK, ENDBUF y NLONLY son puestos en el cero y una coma es colocada en BUFMIN y unos dos puntos en KBFMIN. La direccin del carcter MSX ROM determinado es tomada de 0004H de posiciones y 0005H y colocada en CGPNT + 1 y PRMPRV est dispuesto a apuntar hacia PRMSTK. Los valores falsos son colocados en STKTOP, MEMSIZ y VARTAB (sus valores correctos no son conocidos an), uno que yo el amortiguador de la / O soy ubicado (7E6BH) y el Z80 SP se sediment (62E5H). Un byte de cero es colocado en la base de RAM, TXTTAB est listo para la siguiente posicin y un "NEW" ejecutado (6287H). El VDP es entonces inicializado por el INITIO, INIT32 y rutinas del estndar CLRSPR, las coordenadas del cursor son determinadas para hacer avanzar con el remo 11, columna 10 y el signo en el mensaje "el sistema MSX etctera"" Es exhibido (6678H). Despus de un tres segundo retraso una bsqueda es efectuada para cualquier extensin ROMs (7D75H) y un ms "NEW" ejecutados (6287H) en caso un programa de BASIC ha sido andado de ROM. Finalmente el mensaje de la identificacin "etc MSX BASIC"" Es exhibido (7D29H) y el control transfiere para el 411FH del punto Interpreter Mainloop "Oklahoma". La direccin ... 7D29H Esta rutina es usada durante que se energiza arriba para posibilitar el despliegue de la llave de funcin, colocar en la pantalla 40x24 Text Mode por la rutina del estndar INITXT, y exteriorizar (6678H) el mensaje de la identificacin "MSX BASIC etctera"". La cantidad de memoria libre es entonces computada sustrayendo los contenidos de VARTAB de los contenidos de STKTOP y
- 204 5. EL INTRPRETE DE BASIC ROM La direccin ... 7D5DH Esta rutina es usada durante que se energiza arriba para encontrar la posicin mnima de la RAM. Iniciando en EF00H cada byte es probado hasta que uno sea encontrado que escribi o una direccin de 8000H es alcanzada. La direccin bajo, redondeada arriba para lo ms cercano 256 la demarcacin de byte, es devuelta en par de registro HL. La direccin ... 7D75H Esta rutina es usada durante que se energiza arriba para realizar una bsqueda de la extensin ROM. Manda a llamar 1 y 2 (4000H para BFFFH) de cada ranura son examinadas y los resultados colocados en SLTATR. Una extensin ROM tiene los dos personajes de la identificacin "AB" en los primeros dos bytes para distinguirlo de RAM. La informacin acerca de sus propiedades est tambin presente en los primeros diecisis bytes como sigue: + El 10-15 Reservado De Byte BASIC Text Address MSB Byte 9 BASIC Text Address LSB Byte 8 DISPOSITIVO Address MSB Byte 7 DISPOSITIVO Address LSB Byte 6 DECLARACIN Address MSB Byte 5 DECLARACIN Address LSB Byte 4 INICIALICE a Address MSB Byte 3 INICIALICE a Address LSB Byte 2 42H (' B ') Byte 1 41H (' UNO ') Byte 0 + Figura 48: ROM Header Cada pgina en una ranura dada es examinada leyendo los primeros dos bytes (7E1AH) y revisando en busca del "AB" personajes. Si un ROM est presente que la direccin de inicializacin es leda (7E1AH) y el control pas para ella por la rutina del estndar CALSLT. Con un juego ROM no puede haber regreso para el BASIC de este punto. La "llamada" extendi direccin del manipulador de declaracin es entonces leda (7E1AH) y el bit 5 de B de registro colocada si es vlida, ese es poco cero. La direccin extendida del manipulador del dispositivo es leda (7E1AH) y el bit 6 de B de registro colocada si es vlida. Finalmente la direccin del texto de programa de BASIC es leda (7E1AH) y el bit 7 de B de registro colocada si es vlida. La B de registro es entonces copiada para la colocacin pertinente en SLTATR y la bsqueda continu hasta ningn ms resto de ranuras. SLTATR es entonces examinado para cualquier extensin ROM enlosado como contener texto de programa de BASIC. Si uno es encontrado, entonces su colocacin en SLTATR es convertida a un Slot Idaho (7E2AH) y el ROM permanentemente cambi de decisin adentro por la rutina del estndar ENASLT. VARTAB est listo para C000H, en su estado actual sabido qu tan grande el Program que Text Area es, TXTTAB es determinado para 8008H y BASROM hizo poco cero para desactivar la llave CTRL-STOP. El sistema es aclarado (629AH) y control se traslada para el Runloop (4601H) para ejecutar el programa de BASIC.
- 205 5. EL INTRPRETE DE BASIC ROM La direccin ... 7E1AH Esta rutina se usa para leer dos bytes de posiciones sucesivas en una extensin ROM. La inicial a la direccin est suministrada en par de registro HL y el Slot Idaho de adentro registra C. Los bytes son ledos por la rutina del estndar RDSLT y regresados en par de registro Delaware. Si ambos son, entonce s el cero FLAG Z es devuelto. La direccin ... 7E2AH Estos conversos de rutina en quienes la colocacin SLTATR abasteci registran B en el correspondiente Slot Idaho en C de registro y la direccin de la base ROM en H de registro. La colocacin es primero modificado a fin de que echa a andar de 0 para 63 en vez de 64 para 1, a fin de que la informacin requerida est presente en la forma: 76543210 +----------------------------------------------- + 0 0 PSLOT# SSLOT# PAGE + Figura 49 Los aicos 0 y 1 son intercambiados en los aicos dos ms altos de H de registro para formar la direccin. Los aicos 4 y 5 son intercambiados para aicos 0 y 1 de C de registro para formar el nmero Primario Slot. Los aicos 2 y 3 son intercambiados para aicos 2 y 3 de C de registro para formar el nmero Secundario Slot y mordieron 7 de la entrada correspondiente EXPTBL copiada para bit 7 de C de registro. La direccin ... 7E4BH ste son los "MAXFILES" manipulador de declaracin. Como el control se traslada aqu cuando un "MAX" seal (CDH) es detectado que el texto de programa es primero a cuadros para un "FILES" de arrastre seal (B7H). La cuenta del amortiguador operand, de cero para quince, es luego evaluado (521CH) y cualquier amortiguadores existentes cerrado (6C1CH). El nmero requerido de yo que los amortiguadores de la / O son ubicados (7E6BH), el sistema es aclarado (62A7H) y el control se traslada directamente para el Runloop (4601H). La direccin ... 7E6BH Esto es lo yo la rutina de afijacin del amortiguador de la / O. Es usado durante que se energiza arriba y por los "MAXFILES" y los manipuladores "cristalinos" de declaracin para ubicar almacenamiento para el nmero de yo / que la O modera suministr en A de registro. Doscientos sesenta y siete bytes son sustrados de los contenidos de HIMEM para cada amortiguador para producir un valor nuevo MEMSIZ. El tamao del String existente Storage Area (inicialmente doscientos bytes) es computado sustrayendo los contenidos viejos de STKTOP de los contenidos viejos de MEMSIZ, ste es entonces sustrado del valor nuevo MEMSIZ para producir el valor nuevo STKTOP. Uno ms bytes es
- 206 5. EL INTRPRETE DE BASIC ROM Sustrada para la pila Z80 y uno "por la memoria" el error generado (6275H) si esta direccin est ms abajo del principio del Storage Variable Area. De otra manera la cuenta del amortiguador es colocada en MAXFIL y MEMSIZ y STKTOP determinado para sus valores nuevos. La direccin del remitente de la persona que llama es al que se hizo estallar, el Z80 SP determinado para la colocacin nueva y la direccin de regreso empujada hacia atrs encima de la pila. FILTAB est luego listo al principio de lo que yo el bloque del puntero del amortiguador de la / O y cada puntero a punto para el FCB asociado. Finalmente la direccin de yo el amortiguador de la / O 0, "la CARGA" de Interpreter y "salvo" amortiguador, es colocada en NULBUF y la rutina termina. La direccin ... 7ED8H ste es el mensaje de texto puro "que el sistema MSX" termin por un byte de cero La direccin ... 7EE4H ste es la "versin" de mensaje de texto puro "1.0" RETORNO DE CARRO, LF termin por un byte de cero. La direccin ... 7EF2H ste es el mensaje de texto puro "que MSX BASIC" termin por un byte de cero. La direccin ... 7EFDH ste es el "derecho de autor" de mensaje de texto puro "1983 por Microsoft" RETORNO DE CARRO, LF termin por un byte de cero. La direccin ... 7F1BH ste es el mensaje de texto puro "que los Bytes liberan" terminado por un byte de cero. La direccin ... 7F27H Este bloque de cien bytes de cuarenta y cuatro datos se usa para inicializar el rea Workspace de F380H para F40FH. La direccin ... 7FB7H Este siete parche de byte apuros un problema no resuelto en el software en el dispositivo externo analizando gramaticalmente rutina (55F8H). Revisa en busca de un nombre del dispositivo de largo de cero en A de registro y lo cambia para uno si es necesario. La direccin ... 7FBEH Este captulo del ROM est sin uso y llenado con bytes de cero.
- 207 -
6. El MAPA de MEMORIA Un mximum de 32 el KB de RAM est disponible para el BASIC Interpreter para mantener el texto de programa, el BASIC Variables, la pila Z80, lo que yo / la O modero y el rea de trabajo interno. Un mapa de memoria de estas reas en la condicin que se impulsa arriba es mostrado debajo: + El rea de trabajo Area HIMEM = F380H + Yo El Amortiguador / O 1 + FCB 1 + Yo El Amortiguador / O 0 NULBUF = F177H + FCB 0 + F277H (FCB 1) + FILTAB = F16AH ------ F16EH (FCB 0) + El 00H + MEMSIZ = F168H FRETOP = F168H --- + String Storage Area STKTOP = F0A0H + Z80 Stack + STREND = 8003H + El rea De Almacenamiento De Conjunto Imponente ARYTAB = 8003H + El rea Variable De Almacenamiento VARTAB = 8003H + El rea Del Texto De Programa TXTTAB = 8001H + El 00H + Figura 50: El 8000H de memoria Map para FFFFH El Program Text Area est compuesto de rayado de programa del tokenized almacenado en la orden de nmero de la lnea y terminado por un fin de cero enlace, cuando en la condicin "nueva" slo el enlace de fin est presente. El byte de cero en 8000H es un fin falso de lnea que el carcter necesit sincronizar el Runloop al principio de un programa.
- 208 6. El MAPA de MEMORIA El Variable y Array Storage Areas estn compuestos de cuerda o el numrico Variables y Arrays almacenado en la orden en la cual son encontrados en el texto de programa. La velocidad de ejecucin se mejora marginalmente si Variables es pronunciado antes de que Arrays en un programa como ste reduzca la cantidad de memoria para estar emocionado arriba. La pila Z80 es situada inmediatamente debajo del String Storage Area, la estructura de la parte superior de la pila es exteriorizada debajo: STKTOP + El 00H Mainloop SP ------- 00H + El 46H La declaracin SP ------- 01H + Figura 51: La Parte Superior De La Pila Del Z80 Cuandoquiera que la colocacin de la pila est alterada, como resultado de un "claro" o "MAXFILES" bytes de declaracin, de dos cero son primero empujado para funcionar como un exterminador durante "para" o "GOSUB" bsquedas del bloque de parmetro. Pretencioso ninguno de los bloques de parmetro estn presentes que el Z80 SP por consiguiente estar en casa de STKTOP-2 dentro del Interpreter Mainloop y de STKTOP-4 cuando el control se traslada del Runloop para un manipulador de declaracin. El String Storage Area est compuesto de los cuerpos de la cuerda asignados a Variables o Arrays. Durante la evaluacin de expresin un nmero de resultados intermedios de la cuerda tambin pueden estar por ahora presentes bajo el montn permanente de la cuerda. El byte de cero siguiendo al String Storage Area es un delimitador temporal para el "VAL" funcin. La regin entre el String Storage Area e HIMEM es usada para yo almacenamiento del amortiguador de la / O. Yo el amortiguador de la / O 0, el "SAVE" y "carga" moderamos, es siempre presente pero el nmero de usuario amortiguadores es determinado por los "MAXFILES" declaracin. Cada uno que yo el amortiguador de la / O de un 9 byte FCB, quin es aquel cuya direccin est contenida en la mesa bajo FCB 0, seguida por un amortiguador de datos de 256 bytes. El FCB contiene el estado de lo yo el amortiguador de la / O como debajo: 012345678 + 00H 00H a la ltima DEV 00H POS 00H PPS +----------------------------------------------------- + Figura 52: Archive Bloque De Control El byte A LA LTIMA sostiene el modo del amortiguador, el byte DEV el cdigo del dispositivo, el byte DE PUNTO DE VENTA la colocacin coetnea en el amortiguador (0 para 255) y el byte PPS la colocacin "estampada". El resto del FCB es no acostumbrado en una mquina estndar MSX.
- 209 6. El MAPA de MEMORIA El rea de trabajo Area El captulo del Workspace Area de F380H para FD99H sostiene las variables BIOS / Interpreter. Estos estn listados en las siguientes pginas en forma estndar de lenguaje de asamblea: F380H RDPRIM: FUERA (0A8H), UNO; Coloque a Slot Primario nuevo F382H LD E, (HL); Lea la memoria F383H JR WRPRM1; Restaure a viejo Slot Primario Esta rutina es usada por la rutina del estndar RDSLT para hacer cambiar al Primario Slots y leer un byte de memoria. El Registro Primario nuevo de la Ranura sedimentndose es suministrado en A de registro, la D vieja de registro de establecimiento y el byte leen devueltos en E de registro. F385H WRPRIM: FUERA (0A8H), UNO; Coloque a Slot Primario nuevo F387H LD (HL), E; Escriba para la memoria F388H WRPRM1: LD A, D; Envejezca sedimentndose F389H OUT (0A8H), UNO; Restaure a viejo Slot Primario F38BH RET Esta rutina es usada por la rutina del estndar WRSLT para hacer cambiar al Primario Slots y escribir un byte para la memoria. El Registro Primario nuevo de la Ranura sedimentndose le es suministrado en A de registro, el trasfondo viejo en D de registro y el byte para escribir en E de registro. F38CH CLPRIM: FUERA (0A8H), UNO; Coloque a Slot Primario nuevo F38EH EX AF AF, AF '; Haga un intercambio para AF para la llamada F38FH LLAME CLPRM1; Hgalo F392H EX AF AF, AF '; Haga un intercambio para AF F393H HAGA ESTALLAR a AF; Envejezca sedimentndose F394H OUT (0A8H), UNO; Restaure a viejo Slot Primario F396H EX AF AF, AF '; Haga un intercambio para AF F397H RET F398H CLPRM1: JP (IX) Esta rutina es usada por la rutina del estndar CALSLT para hacer cambiar al Primario Slots y llamar una direccin. La Ranura Primaria nueva Registro sedimentndose es abastecido en A de registro, el trasfondo viejo en la pila Z80 y la direccin para hacer venir registro parean a IX. F39AH USRTAB: DEFW 475AH; USR 0 F39CH DEFW 475AH; USR 1 F39EH DEFW 475AH; USR 2 F3A0H DEFW 475AH; USR 3 F3A2H DEFW 475AH; USR 4 F3A4H DEFW 475AH; USR 5 F3A6H DEFW 475AH; USR 6 F3A8H DEFW 475AH; USR 7 F3AAH DEFW 475AH; USR 8 F3ACH DEFW 475AH; USR 9 Estas diez variables contienen al "USR" direcciones de funcin. Sus valores son determinados para el Interpreter "la Llamada ilegal de funcin" el error
El generador en. F3AEH LINL40: DEFB 37 Esta variable contiene la anchura de la pantalla del 40x24 Text Mode. Su valor acometi contra que se energiza arriba y despus slo alterado por la "anchura" declaracin. F3AFH LINL32: DEFB 29 Esta variable contiene la anchura de la pantalla del 32x24 Text Mode. Su valor acometi contra que se energiza arriba y despus slo alterado por la "anchura" declaracin. F3B0H LINLEN: DEFB 37 Esta variable contiene la anchura coetnea de la pantalla de modo del texto. Su valor es determinado de LINL40 o LINL32 cuandoquiera que el VDP es inicializado para un modo del texto por el INITXT o las rutinas estndar INIT32. F3B1H CRTCNT: DEFB 24 Esta variable contiene el nmero de filas en la pantalla. Su valor acometi energizar y despus inalterado. F3B2H CLMLST: DEFB 14 Esta variable contiene el nmero mnimo de columnas que todava debe estar disponible en una lnea que unos datos tem sean " PRINT"ed, si menos espacio est disponible un RETORNO DE CARRO, LF es expedido primera parte. Su valor acometi contra que se energiza arriba y despus slo alterado por la "anchura" y "pantalla" declaraciones. F3B3H TXTNAM: DEFW 0000H; La Base De La Mesa De Nombre F3B5H TXTCOL: DEFW 0000H; La Base De La Mesa De Color F3B7H TXTCGP: DEFW 0800H; La Base Del Patrn De Carcter F3B9H TXTATR: DEFW 0000H; La Base De Atributo De Bloque De Objetos Movibles F3BBH TXTPAT: DEFW 0000H; La Base Del Patrn De Bloque De Objetos Movibles Estas cinco variables contienen las direcciones de la base del 40x24 Text Mode VDP. Sus valores acometi contra que se energiza arriba y despus slo alterado por la declaracin "bajo". F3BDH T32NAM: DEFW 1800H; La Base De La Mesa De Nombre F3BFH T32COL: DEFW 2000H; La Base De La Mesa De Color F3C1H T32CGP: DEFW 0000H; La Base Del Patrn De Carcter F3C3H T32ATR: DEFW 1B00H; La Base De Atributo De Bloque De Objetos Movibles F3C5H T32PAT: DEFW 3800H; La Base Del Patrn De Bloque De Objetos Movibles Estas cinco variables contienen las direcciones de la base del 32x24 Text Mode VDP. Sus valores acometi contra que se energiza arriba y despus slo alterado por la declaracin "bajo".
F3C7H GRPNAM: DEFW 1800H; La Base De La Mesa De Nombre F3C9H GRPCOL: DEFW 2000H; La Base De La Mesa De Color F3CBH GRPCGP: DEFW 0000H; La Base Del Patrn De Carcter F3CDH GRPATR: DEFW 1B00H; La Base De Atributo De Bloque De Objetos Movibles F3CFH GRPPAT: DEFW 3800H; La Base Del Patrn De Bloque De Objetos Movibles Estas cinco variables contienen las direcciones de la base Graphics Mode VDP. Sus valores acometi contra que se energiza arriba y despus slo alterado por la declaracin "bajo". F3D1H MLTNAM: DEFW 0800H; La Base De La Mesa De Nombre F3D3H MLTCOL: DEFW 0000H; La Base De La Mesa De Color F3D5H MLTCGP: DEFW 0000H; La Base Del Patrn De Carcter F3D7H MLTATR: DEFW 1B00H; La Base De Atributo De Bloque De Objetos Movibles F3D9H MLTPAT: DEFW 3800H; La Base Del Patrn De Bloque De Objetos Movibles Estas cinco variables contienen las direcciones de la base Multicolour Mode VDP. Sus valores acometi contra que se energiza arriba y despus slo alterado por la declaracin "bajo". F3DBH CLIKSW: DEFB 01H Esta variable controla lo interrumpe chasquido de la llave del manipulador: El 00H = Off, NZ = On. que Su valor es contra el que se acometi. F3DCH CSRY: DEFB 01H Esta variable contiene la fila coordinada (de 1 para CTRCNT) del cursor de modo del texto. F3DDH CSRX: DEFB 01H Esta variable contiene la columna coordinada (de 1 para LINLEN) del cursor de modo del texto. Noto que las coordenadas del cursor BIOS para la casa sitan son 1,1 cualquier cosa la anchura de la pantalla. F3DEH CNSDFG: DEFB FFH Esta variable contiene la condicin coetnea del despliegue de la llave de funcin: El 00H = Off, NZ = On. F3DFH RG0SAV: DEFB 00H F3E0H RG1SAV: DEFB F0H F3E1H RG2SAV: DEFB 00H F3E2H RG3SAV: DEFB 00H F3E3H RG4SAV: DEFB 01H F3E4H RG5SAV: DEFB 00H F3E5H RG6SAV: DEFB 00H F3E6H RG7SAV: DEFB F4H Estas ocho variables imitan la condicin del ocho VDP que se escribe slo Mode Registers. Los valores exteriorizados son para 40x24 Text Mode.
F3E7H STATFL: DEFB CAH Esta variable est continuamente actualizada por ah lo interrumpe manipulador con los contenidos del VDP Status Register. F3E8H TRGFLG: DEFB F1H Esta variable est continuamente actualizada por ah lo interrumpe manipulador con la condicin de las cuatro entradas del gatillo de la palanca de control y la llave de espacio. F3E9H FORCLR: DEFB 0FH; El blanco Esta variable contiene el color actual del primer plano. Su valor acometi contra que se energiza arriba y despus slo alterado por el "color" declaracin. El color del primer plano es usado por la rutina del estndar CLRSPR para colocar el color de bloque de objetos movibles y por la rutina del estndar CHGCLR para incrustar al color 1 pixel en los modos del texto. Tambin funciona como los grficos color de tinta en su estado actual copiado para ATRBYT por la rutina del estndar GRPPRT y usado a todo lo largo del Interpreter como el valor predeterminado para cualquier operand optativo de color. F3EAH BAKCLR: DEFB 04H; Azul profundo Esta variable contiene el color de fondo actual. Su valor acometi contra que se energiza arriba y despus slo alterado por el "color" declaracin. El color de fondo es usado por la rutina del estndar de Lingsticas Computacionales para despejar la pantalla en los modos de grficos y por la rutina del estndar CHGCLR a incrustar al color 0 pixel en los modos del texto. F3EBH BDRCLR: DEFB 04H; Azul profundo Esta variable contiene el color fronterizo actual. Su valor acometi contra que se energiza arriba y despus slo alterado por el "color" declaracin. Mientras color fronterizo es usado por la rutina del estndar CHGCLR en 32x24 Text Mode, Graphics Mode y Mode Multicolor para se sediment color fronterizo. F3ECH MAXUPD: DEFB C3H F3EDH DEFW 0000H Estos dos bytes son suplidos por la "lnea" manipulador de declaracin para forjar a un Z80 JP para el RIGHTC, LEFTC, UPC o rutinas del estndar DOWNC. F3EFH MINUPD: DEFB C3H F3F0H DEFW 0000H Estos dos bytes son suplidos por la "lnea" manipulador de declaracin para forjar a un Z80 JP para el RIGHTC, LEFTC, UPC o rutinas del estndar DOWNC.
F3F2H ATRBYT: DEFB 0FH Esta variable contiene el color de tinta de grficos usado por el SETC y rutinas del estndar NSETCX. F3F3H HACE COLA: DEFW F959H Esta variable contiene la direccin de los bloques de control para las tres colas de msica. Su valor acometi energizar y despus inalterado. F3F5H FRCNEW: DEFB FFH Esta variable contiene una bandera para distinguir las dos declaraciones en el "CLOAD/CLOAD"? El manipulador de declaracin: 00H = CLOAD, FFH=CLOAD?. F3F6H SCNCNT: DEFB 01H Esta variable es utilizada como un mueble mostrador por lo interrumpe manipulador para monitorear la tasa en la cual el teclado escudria es realizado. F3F7H REPCNT: DEFB 01H Esta variable es utilizada como un mueble mostrador por lo interrumpe manipulador para monitorear la llave repite tasa. F3F8H PUTPNT: DEFW FBF0H Esta variable contiene la direccin de la colocacin puesta en KEYBUF. F3FAH GETPNT: DEFW FBF0H Esta variable contiene la direccin de lo obtiene colocacin en KEYBUF. F3FCH CS1200: DEFB 53H; LO recicle mitad 1 F3FDH DEFB 5CH; LO recicle mitad 2 F3FEH DEFB 26H; El ciclo de Hawaii la mitad 1 F3FFH DEFB 2DH; El ciclo de Hawaii la mitad 2 F400H DEFB 0FH; La cuenta de ciclo del encabezado Estas cinco variables contienen los 1200 parmetros del casete de baudio. Sus valores acometi energizar y despus inalterado. F401H CS2400: DEFB 25H; LO recicle mitad 1 F402H DEFB 2DH; LO recicle mitad 2 F403H DEFB 0EH; El ciclo de Hawaii la mitad 1 F404H DEFB 16H; El ciclo de Hawaii la mitad 2 F405H DEFB 1FH; La cuenta de ciclo del encabezado Estas cinco variables contienen los 2400 parmetros del casete de baudio. Sus valores acometi energizar y despus inalterado.
- 214 -
6. El MAPA de MEMORIA
F406H MUJA: DEFB 53H; LO recicle mitad 1 F407H DEFB 5CH; LO recicle mitad 2 El ALTO F408H: DEFB 26H; El ciclo de Hawaii la mitad 1 F409H DEFB 2DH; El ciclo de Hawaii la mitad 2 El ENCABEZADO F40AH: DEFB 0FH; La cuenta de ciclo del encabezado Estas cinco variables contienen los parmetros coetneos del casete. Sus valores son determinados para 1200 el baudio en energizar y despus slo alterado por el "CSAVE" y "ocultan" declaraciones. F40BH ASPCT1: DEFW 0100H Esta variable contiene lo recproco del "crculo" predeterminado proporcin dimensional multiplicado por 256. Su valor acometi energizar y despus inalterado. F40DH ASPCT2: DEFW 01C0H Esta variable contiene el "crculo" predeterminado proporcin dimensional multiplicado por 256. Su valor acometi energizar y despus inalterado. La proporcin dimensional est presente en dos formas a fin de que el "crculo" manipulador de declaracin puede seleccionar a lo apropiado inmediatamente en vez de necesitar examinar y posiblemente reciprocar l segn es la caja con un operand en el texto de programa. F40FH ENDPRG: DEFB "" F410H DEFB 00H F411H DEFB 00H FE12H DEFB 00H F413H DEFB 00H Estos cinco bytes forman una lnea falsa de programa. Sus valores acometi energizar y despus inalterado. La lnea existe en caso un error ocurre en el Interpreter Mainloop antes de que cualquier texto del tokenized est disponible en KBUF. Si uno "en ERROR GOTO" es activo a esta hora luego provee algn texto para el "curriculum vitae" declaracin para terminar adelante. F414H ERRFLG: DEFB 00H Esta variable es usada por el manipulador de error Interpreter para ahorrar el nmero de error. F415H LPTPOS: DEFB 00H Esta variable es usada por el "LPRINT" manipulador de declaracin para sostener la colocacin coetnea de la cabeza de la impresora. F416H PRTFLG: DEFB 00H Esta variable determina si la rutina del estndar OUTDO dirige su salida para la pantalla o para la impresora: El 00H = Screen, 01H Printer.
F417H NTMSXP: DEFB 00H Esta variable determina si la rutina del estndar OUTDO reemplazar headered que los personajes de grficos dirigieron para la impresora con espacios: El 00H = Graphics, NZ = Spaces. Su valor acometi contra que se energiza arriba y despus slo alterado por la "pantalla" declaracin. F418H RAWPRT: DEFB 00H Esta variable determina si la rutina del estndar OUTDO modificar control y headered que los personajes de grficos dirigieron para la impresora: El 00H = Modify, NZ = Raw. Su valor acometi energizar y despus inalterado. F419H VLZADR: DEFW 0000H F41BH VLZDAT: DEFB 00H Estas variables contienen la direccin y valor de cualquier carcter por ahora removido por el "VAL" funcin. F41CH CURLIN: DEFW FFFFH Esta variable contiene el nmero actual de la lnea Interpreter. Un valor de FFFFH denota modo directo. F41EH KBFMIN: DEFB "" Este byte provee un prefijo falso para el texto del tokenized contenido en KBUF. Su funcin es similar a que de ENDPRG sino sirve para la situacin donde un error ocurre dentro de una declaracin directa. F41FH KBUF: DEFS 318 Este amortiguador contiene la forma del tokenized de la lnea de entrada cobrada por el Interpreter Mainloop. Cuando una declaracin directa es ejecutada los contenidos de esta forma del amortiguador el texto de programa. F55DH BUFMIN: DEFB Este byte provee un prefijo falso para el texto contenido en BUF. Se usa para sincronizar la "entrada" manipulador de declaracin como comienza a analizar el texto de entrada. F55EH BUF: DEFS 259
Este amortiguador contiene el texto cobrado de la consola por la rutina del estndar INLIN. F661H TTYPOS: DEFB 00H Esta variable es usada por el manipulador "estampado" de declaracin para sostener la colocacin coetnea de la pantalla (el Teletipo!).
F662H DIMFLG: DEFB 00H Esta variable es normalmente cero pero es determinada por el manipulador "dbil" de declaracin para controlar la operacin de la rutina variable de bsqueda. F663H VALTYP: DEFB 02H Esta variable contiene el cdigo de tipo del operand actualmente contenido en DAC: El entero, 3 = String, 4 = el Solo Precision, 8 = el Doble Precision. F664H DORES: DEFB 00H Esta variable es normalmente cero pero es determinada para impedir la tokenizacin de palabras claves no citadas siguiendo a una "DATA" valor simblico. F665H DONUM: DEFB 00H Esta variable es normalmente cero pero es determinada cuando una constante numrica sigue uno del palabra clave GOTO, GOSUB, LUEGO, etc., Y debe ser tokenized para la forma especial del operand de nmero de la lnea. F666H CONTXT: DEFW 0000H Esta variable es usada por la rutina del estndar CHRGTR para ahorrar la direccin del carcter siguiendo una constante numrica en el texto de programa. F668H CONSAV: DEFB 00H Esta variable es usada por la rutina del estndar CHRGTR para ahorrar la seal de una constante numrica encontrada en el texto de programa. F669H CONTYP: DEFB 00H Esta variable es usada por la rutina del estndar CHRGTR para ahorrar el tipo de una constante numrica encontrada en el texto de programa. F66AH CONLO: DEFS 8 Este amortiguador es usado por la rutina del estndar CHRGTR para ahorrar el valor de una constante numrica encontrada en el texto de programa. F672H MEMSIZ: DEFW F168H Esta variable contiene la direccin de la parte superior del String Storage Area. Su valor acometi contra que se energiza arriba y despus slo alterado por el "claro" y "MAXFILES" declaraciones. F674H STKTOP: DEFW F0A0H Esta variable contiene la direccin de la parte superior de la pila Z80. Su valor acometi contra que se energiza arriba para MEMSIZ-200 y despus slo
Alterado por el "claro" y "MAXFILES" declaraciones. F676H TXTTAB: DEFW 8001H Esta variable contiene la direccin del primer byte del Program Text Area. Su valor acometi energizar y despus inalterado. F678H TEMPPT: DEFW F67AH Esta variable contiene la direccin de la siguiente posicin libre en TEMPST. F67AH TEMPST: DEFS 30 Este amortiguador se usa para almacenar descriptores de la cuerda. Funciona como una pila con productores de la cuerda empujando sus resultados y los consumidores de la cuerda hacindoles estallar. F698H DSCTMP: DEFS 3 Este amortiguador es usado por las funciones de la cuerda a mantener un descriptor de resultado mientras est siendo construido. F69BH FRETOP: DEFW F168H Esta variable contiene la direccin de la siguiente posicin libre en el String Storage Area. Cundo el rea es FRETOP vaco es igual a MEMSIZ. F69DH TEMP3: DEFW 0000H Esta variable sirve para almacenamiento temporal por partes diversas del Interpreter. F69FH TEMP8: DEFW 0000H Esta variable sirve para almacenamiento temporal por partes diversas del Interpreter. F6A1H ENDFOR: DEFW 0000H Esta variable es usada por el "FOR" manipulador de declaracin para sostener el fin de direccin de declaracin durante construccin de un bloque de parmetro. F6A3H DATLIN: DEFW 0000H Esta variable contiene el nmero de la lnea de los "datos" coetneos tem en el texto de programa. F6A5H SUBFLG: DEFB 00H Esta variable es normalmente cero pero es determinada por el "ERASE"
"Para", "FN" y "DEF FN" manipuladores para controlar el procesamiento de subndices por la variable investigan rutina. F6A6H FLGINP: DEFB 00H Esta variable contiene una bandera para distinguir las dos declaraciones en la "lectura /entrada" manipulador de declaracin: = la ENTRADA del 00H, NZ=READ. F6A7H TEMP: DEFW 0000H Esta variable sirve para almacenamiento temporal por partes diversas del Interpreter. F6A9H PTRFLG: DEFB 00H Esta variable es normalmente cero pero es determinada si cualquier operands de nmero de la lnea en el Program Text Area han sido convertidos a punteros. F6AAH AUTFLG: DEFB 00H Esta variable es normalmente cero pero es determinada cuando "el AUTOMVIL" el modo se enciende. F6ABH AUTLIN: DEFW 0000H Esta variable contiene el "automvil" en uso en estos momentos nmero de la lnea. F6ADH AUTINC: DEFW 0000H Esta variable contiene el "automvil" en uso en estos momentos incremento de nmero de la lnea. F6AFH SAVTXT: DEFW 0000H Esta variable est actualizada por el Runloop al principio de cada declaracin con la posicin en uso en estos momentos en el texto de programa. Es usado durante la recuperacin de error para colocar a ERRTXT para el "curriculum vitae" manipulador de declaracin y OLDTXT para el "CONT" manipulador de declaracin. F6B1H SAVSTK: DEFW F09EH Esta variable est actualizada por el Runloop al principio de cada declaracin con el Z80 actual SP para el error que la recuperacin tiene en mente. F6B3H ERRLIN: DEFW 0000H Esta variable es usada por el manipulador de error para mantener el nmero de la lnea de la lnea de programa generando un error. F6B5H PUNTEE: DEFW 0000H
Esta variable est actualizada por el Mainloop y el manipulador de error con el nmero actual de la lnea para el uso con lo "" El parmetro.
F6B7H ERRTXT: DEFW 0000H Esta variable est actualizada de SAVTXT por el manipulador de error para el uso por el "curriculum vitae" manipulador de declaracin. F6B9H ONELIN: DEFW 0000H Esta variable est lista por ah lo "en ERROR GOTO" manipulador de declaracin con la direccin de la lnea de programa a ejecutar cuando un error ocurre. F6BBH ONEFLG: DEFB 00H Esta variable es normalmente cero pero es determinada por el manipulador de error cuando el control se traslada para uno "en ERROR GOTO" declaracin. Esto debe impedir un lazo desarrollndose si un error ocurre dentro de las declaraciones de recuperacin de error. F6BCH TEMP2: DEFW 0000H Esta variable sirve para almacenamiento temporal por partes diversas del Interpreter. F6BEH OLDLIN: DEFW 0000H Esta variable contiene el nmero de la lnea de la lnea de programa que termina. Est colocado por el "fin" y "el ALTO" manipuladores de declaracin para el uso con el "CONT" declaracin. F6C0H OLDTXT: DEFW 0000H Esta variable contiene la direccin de la declaracin de programa que termina. F6C2H VARTAB: DEFW 8003H Esta variable contiene la direccin del primer byte del Storage Variable Area. F6C4H ARYTAB: DEFW 8003H Esta variable contiene la direccin del primer byte del Array Storage Area. F6C6H STREND: DEFW 8003H Esta variable contiene la direccin del byte siguiendo el rea Array Storage. F6C8H DATPTR: DEFW 8000H Esta variable contiene la direccin de los "datos" coetneos tem en el texto de programa.
F6CBH DEFB 08H; B F6CCH DEFB 08H; C F6CDH DEFB 08H; D F6CEH DEFB 08H; E F6CFH DEFB 08H; F F6D0H DEFB 08H; G F6D1H DEFB 08H; H F6D2H DEFB 08H; yo F6D3H DEFB 08H; J F6D4H DEFB 08H; K F6D5H DEFB 08H; L F6D6H DEFB 08H; M F6D7H DEFB 08H; N F6D8H DEFB 08H; O F6D9H DEFB 08H; P F6DAH DEFB 08H; Q F6DBH DEFB 08H; interrogacin F6DCH DEFB 08H; S F6DDH DEFB 08H; T F6DEH DEFB 08H; U F6DFH DEFB 08H; V F6E0H DEFB 08H; W F6E1H DEFB 08H; X F6E2H DEFB 08H; Y F6E3H DEFB 08H; Z Estas veintiseis variables contienen el tipo predeterminado para cada grupo de BASIC Variables. Sus valores son determinados para duplicar precisin en "NEW" que se energiza arriba, y "despejarse" y despus alterados slo por el "DEF" grupo de declaraciones. F6E4H PRMSTK: DEFW 0000H Esta variable contiene la direccin bajo del "FN" previo bloque de parmetro en la pila Z80. Es usado durante coleccin de basura de la cuerda para hacer de bloque para bloquear en la pila. F6E6H PRMLEN: DEFW 0000H Esta variable contiene el largo del "FN" actual bloque de parmetro en PARM1. F6E8H PARM1: DEFS 100 Este amortiguador contiene las Variables locales formando parte del "FN" funcin actualmente siendo evaluado. F74CH PRMPRV: DEFW F6E4H Esta variable contiene la direccin del "FN" previo bloque de parmetro. Es de hecho una constante usada asegurar que la coleccin de basura de la cuerda empieza con el bloque de parmetro en uso en estos momentos antes de proceder para esos en la pila.
Esta variable contiene el largo del bloque de parmetro "FN" forjndose en PARM2 F750H PARM2: DEFS 100 Este amortiguador se usa para construir al local Variables posedo por el "FN" actual funcin. F7B4H PRMFLG: DEFB 00H Esta variable es usada durante una bsqueda Variable para indicar si Variables local o global est siendo examinado. F7B5H ARYTA2: DEFW 0000H Esta variable es usada durante una bsqueda Variable para mantener la direccin de terminacin del rea de almacenamiento siendo examinada. F7B7H NOFUNS: DEFB 00H Esta variable es normalmente cero pero es determinada por el "FN" manipulador de funcin para indicar para la rutina variable de bsqueda que las Variables locales estn presentes. F7B8H TEMP9: DEFW 0000H Esta variable sirve para almacenamiento temporal por partes diversas del Interpreter. F7BAH FUNACT: DEFW 0000H Esta variable contiene el nmero de actualmente activo " FN funciona. F7BCH SWPTMP: DEFS 8 Este amortiguador se usa para mantener el primer operand en un "trueque" declaracin. F7C4H TRCFLG: DEFB 00H Esta variable es normalmente cero pero es determinada por el "TRON" manipulador de declaracin para encender la instalacin de la huella. F7C5H FBUFFR: DEFS 43 Este amortiguador se usa para mantener el texto producido durante la conversin numrica de salida. F7F0H DECTMP: DEFW 0000H Esta variable sirve para almacenamiento temporal por el doble
Esta variable sirve para almacenamiento temporal por la rutina doble de divisin de precisin. F7F4H DECCNT: DEFB 00H Esta variable es usada por la rutina doble de divisin de precisin para mantener el nmero de bytes de poco cero en el mantissa del segundo operand. F7F6H DAC: DEFS 16
Este amortiguador funciona como el acumulador primario de Interpreter durante la evaluacin de expresin. F806H HOLD8: DEFS 65 Este amortiguador es usado por la rutina doble de multiplicacin de precisin para sostener los mltiplos del primer operand. F847H ARG: DEFS 16
Este amortiguador funciona como el acumulador secundario de Interpreter durante la evaluacin de expresin. F857H RNDX: DEFS 8 Este amortiguador contiene la precisin doble coetnea al azar nmero. F85FH MAXFIL: DEFB 01H Esta variable contiene el nmero de usuario actualmente ubicado que yo / la O modero. Su valor es determinado para 1 en energizar y despus slo alterado por los "MAXFILES" declaracin. F860H FILTAB: DEFW F16AH Esta variable contiene la direccin de la mesa del puntero para lo yo los FCBs del amortiguador de la / O. F862H NULBUF: DEFW F177H Esta variable contiene la direccin del primer byte del amortiguador de datos perteneciendo para yo el amortiguador de la / O 0. F864H PTRFIL: DEFW 0000H Esta variable contiene que la direccin de lo actualmente activo yo / la O modero FCB.
F866H FILNAM: DEFS 11 Este amortiguador mantiene un filename especificado por usuario. Son once personajes largos
para tener en cuenta lentes del archivo del disco como "FILENAME.BAS". F871H FILNM2: DEFS 11 Este amortiguador tiene aplicacin que un filename ley de uno yo el dispositivo de la / O para la comparacin con los contenidos de FILNAM. F87CH NLONLY: DEFB 00H Esta variable es normalmente cero pero es determinada durante un programa "carga". El bit 0 se usa para impedir yo amortiguador de la / O 0 estar cerrado durante cargar y el bit 7 para advertir el usuario que yo ser de amortiguadores de la / O cerr la plana si andado en automvil es requerido. F87DH SAVEND: DEFW 0000H Esta variable es usada por el "BSAVE" manipulador de declaracin para mantener la direccin de fin del bloque de memoria a ser ahorrada. F87FH FNKSTR: DEFS 160 Este amortiguador contiene lo diez instrumentos de cuerda de la llave de funcin de diecisis carcteres. Sus valores acometi contra que se energiza arriba y despus slo alterado por la declaracin "crucial". F91FH CGPNT: DEFB 00H; La ranura Idaho F920H DEFW 1BBFH; La direccin Estas variables contienen la posicin del set de carcter copiado para el VDP por el INITXT y rutinas estndar INIT32. Sus valores son determinados para el conjunto de caracteres MSX ROM en energizar y despus inalterado. F922H NAMBAS: DEFW 0000H Esta variable contiene la direccin de la base de modo del texto VDP Name Table en uso en estos momentos. Su valor es determinado de TXTNAM o T32NAM cuandoquiera que el VDP es inicializado para un modo del texto por el INITXT o las rutinas estndar INIT32. F924H CGPBAS: DEFW 0800H Esta variable contiene la direccin de la base de modo del texto VDP Character Pattern Table en uso en estos momentos. Su valor es determinado de TXTCGP o T32CGP cuandoquiera que el VDP es inicializado para un modo del texto por el INITXT o las rutinas estndar INIT32. F926H PATBAS: DEFW 3800H Esta variable contiene la Mesa VDP Sprite Pattern en uso en estos momentos
Base direccin. Su valor es determinado de T32PAT, GRPPAT o MLTPAT cuandoquiera que el VDP es inicializado por el INIT32, INIGRP o rutinas del estndar INIMLT.
F928H ATRBAS: DEFW 1B00H Esta variable contiene la direccin de la base VDP Sprite Attribute Table en uso en estos momentos. Su valor es determinado de T32ATR, GRPATR o MLTATR cuandoquiera que el VDP es inicializado por el INIT32, INIGRP o rutinas del estndar INIMLT. F92AH CLOC: DEFW 0000H; La posicin Pixel F92CH CMASK: DEFB 80H; Pixel Mask Estas variables contienen la direccin fsica del pixel en uso en estos momentos usada por el RIGHTC, LEFTC, UPC, TUPC, DOWNC, TDOWNC, FETCHC, STOREC, READC, SETC, NSETCX, SCANR y rutinas del estndar SCANL. CLOC mantiene la direccin del byte conteniendo el pixel en uso en estos momentos y CMASK define el pixel dentro de ese byte. F92DH MINDEL: DEFW 0000H Esta variable es usada por la "lnea" manipulador de declaracin para sostener la diferencia mnima entre las proposiciones de fin de la lnea. F92FH MAXDEL: DEFW 0000H Esta variable es usada por la "lnea" manipulador de declaracin para sostener la diferencia mxima entre las proposiciones de fin de la lnea. El ASPECTO F931H: DEFW 0000H Esta variable es usada por el "crculo" manipulador de declaracin para sostener la proporcin dimensional coetnea. Esto es almacenado como un solo byte fragmento binario as es que una proporcin dimensional de 0.75 se convertira en 00C0H. El MSB es slo requerido si la proporcin dimensional es exactamente 1.00, ese es 0100H. F933H CENCNT: DEFW 0000H Esta variable es usada por el "crculo" manipulador de declaracin para mantener la cuenta del punto del ngulo de fin. F935H CLINEF: DEFB 00H Esta variable es usada por el "crculo" manipulador de declaracin para mantener las dos banderas de la lnea. El bit 0 est colocado si una lnea es requerida del ngulo de principio para el centro y el set 7 mordido si uno es requerido del ngulo de fin. F936H CNPNTS: DEFW 0000H Esta variable es usada por el "crculo" manipulador de declaracin para mantener el nmero de proposiciones dentro de un segmento de cuarenta y cinco grados.
F938H CPLOTF: DEFB 00H Esta variable es normalmente cero pero es determinada por el "crculo" manipulador de
declaracin si el ngulo de fin es ms pequeo que el ngulo de principio. Se usa para determinar si los pixels deberan estar colocados "dentro de" los ngulos o "fuera de" ellos. F939H CPCNT: DEFW 0000H Esta variable es usada por el ' CRCULO" manipulador de declaracin para mantener la cuenta del punto dentro de la corriente cuarenta y cinco segmento de grado, sta est de hecho la coordenada de la Y. F93BH CPCNT8: DEFW 0000H Esta variable es usada por el "crculo" manipulador de declaracin para mantener la cuenta total del punto de la colocacin presente. F93DH CRCSUM: DEFW 0000H Esta variable es usada por el "crculo" manipulador de declaracin como el mueble mostrador de computacin del punto. F93FH CSTCNT: DEFW 0000H Esta variable es usada por el "crculo" manipulador de declaracin para mantener la cuenta del punto del ngulo de principio. F941H CSCLXY: DEFB 00H Esta variable es usada por el "crculo" manipulador de declaracin como una bandera para determinar en cul direccin el tropel elptico debe ser aplicado: 00H = Y, 01H = X. F942H CSAVEA: DEFW 0000H Esta variable sirve para almacenamiento temporal por la rutina del estndar SCANR. F944H CSAVEM: DEFB 00h Esta variable sirve para almacenamiento temporal por la rutina del estndar SCANR. F945H CXOFF: DEFW 0000H Esta variable sirve para almacenamiento temporal por el "crculo" manipulador de declaracin. F947H CYOFF: DEFW 0000H Esta variable sirve para almacenamiento temporal por el "crculo" manipulador de declaracin.
F949H LOHMSK: DEFB 00H Esta variable es usada por la "pintura" manipulador de declaracin para sostener la colocacin del leftmost de una excursin LH.
F94AH LOHDIR: DEFB 00H Esta variable es usada por la "pintura" manipulador de declaracin para mantener la direccin de pintura nueva requerida por una excursin LH. F94BH LOHADR: DEFW 0000H Esta variable es usada por la "pintura" manipulador de declaracin para sostener la colocacin del leftmost de una excursin LH. F94DH LOHCNT: DEFW 0000H Esta variable es usada por la "pintura" manipulador de declaracin para sostener el tamao de una excursin LH. F94FH SKPCNT: DEFW 0000H Esta variable es usada por la "pintura" manipulador de declaracin para mantener la cuenta de salto devuelta por la rutina del estndar SCANR. F951H MOVCNT: DEFW 0000H Esta variable es usada por la "pintura" manipulador de declaracin para mantener la cuenta de movimiento devuelta por la rutina del estndar SCANR. F953H PDIREC: DEFB 00H Esta variable es usada por la "pintura" manipulador de declaracin para sostener la direccin coetnea de pintura: El 40H = Down, C0H Up, 00H Terminate. F954H LFPROG: DEFB 00H Esta variable es normalmente cero pero es determinada por la "pintura" manipulador de declaracin si ha habido cualquier hacia la izquierda progresa. F955H RTPROG: DEFB 00H Esta variable es normalmente cero pero es determinada por la "pintura" manipulador de declaracin si ha habido cualquier progreso de rightwards. F956H MCLTAB: DEFW 0000H Esta variable contiene la direccin de la mesa de orden para ser usada por el analizador gramatical de lenguaje de macro. El "empate" mesa est en 5D83H y el "juego" mesa en 752EH. F958H MCLFLG: DEFB 00H Esta variable es cero si el analizador gramatical de lenguaje de macro es
Usados por el "empate", el manipulador de declaracin y el poco cero si estuviera siendo usado "juegan".
F959H QUETAB: DEFB 00H; AQ Ponga colocacin F95AH DEFB 00H; AQ Obtenga colocacin F95BH DEFB 00H; La bandera AQ Putback F95CH DEFB 7FH; AQ Size F95DH DEFW F975H; AQ Address F95FH DEFB 00H; BQ Ponga colocacin F960H DEFB 00H; BQ Obtenga colocacin F961H DEFB 00H; La bandera BQ Putback F962H DEFB 7FH; BQ Size F963H DEFW F9F5H; BQ Address F965H DEFB 00H; CQ Ponga colocacin F966H DEFB 00H; CQ Obtenga colocacin F967H DEFB 00H; La bandera CQ Putback F968H DEFB 7FH; CQ Size F969H DEFW FA75H; CQ Address F96BH DEFB 00H; RQ Ponga colocacin F96CH DEFB 00H; RQ Obtenga colocacin F96DH DEFB 00H; La bandera RQ Putback F96EH DEFB 00H; RQ Size F96FH DEFW 0000H; RQ Address Estas veinticuatro variables forman los bloques de control para las tres colas de msica (VOICAQ, VOICBQ y VOICCQ) y la cola del RS232. Los tres bloques de control de msica son en los que se puso las iniciales por la rutina del estndar GICINI y despus mantenidos por ah lo interrumpen manipulador y la rutina del estndar PUTQ. El bloque de control del RS232 est sin uso en el MSX ROM actual. F971H QUEBAK: DEFB 00H; El carcter AQ Putback F972H DEFB 00H; El carcter BQ Putback F973H DEFB 00H; El carcter CQ Putback F974H DEFB 00H; El carcter RQ Putback Estas cuatro variables se usan para creer que cualquier carcter no deseado devuelto a la cola asociada. Aunque la facilidad del putback es implementada en el MSX ROM est actualmente sin uso. F975H VOICAQ: DEFS 128; Sonorice UNA cola F9F5H VOICBQ: DEFS 128; La cola de la B de voz FA75H VOICCQ: DEFS 128; La cola de la C de voz FAF5H RS2IQ: DEFS 64; La cola del RS232 Estos cuatro amortiguadores contienen las tres colas de msica y la cola del RS232, lo ms reciente est sin uso. FB35H PRSCNT: DEFB 00H Esta variable es usada por el "juego" manipulador de declaracin a contar
El nmero de operand completado forma una serie. El bit 7 est tambin colocado despus de que cada uno de los tres operands han sido a los que se analiz gramaticalmente para impedir repetida activacin de la rutina del estndar STRTMS. FB36H SAVSP: DEFW 0000H Esta variable es usada por el "juego" manipulador de declaracin para salvar al Z80 SP antes de que el control se traslada para el analizador gramatical de lenguaje de macro. Su valor es comparado con el SP en el regreso para determinar si cualquier datos han quedado sobre la pila por una terminacin llena en la cola por el analizador gramatical. FB38H VOICEN: DEFB 00H Esta variable contiene el nmero actual de voz siendo procesada por el "juego" manipulador de declaracin. Los valores 0, 1 y 2 son propios de A de canales PSG, B y C. FB39H SAVVOL: DEFW 0000H Esta variable es usada por la "interrogacin" de declaracin de "juego" manipulador de orden a salvar el trasfondo actual de volumen mientras un descanso de amplitud de cero es generado. FB3BH MCLLEN: DEFB 00H Esta variable es usada por el analizador gramatical de lenguaje de macro para sostener el largo del operand de la cuerda siendo a la que se analiz gramaticalmente. FB3CH MCLPTR: DEFW 0000H Esta variable es usada por el analizador gramatical de lenguaje de macro para mantener la direccin del operand de la cuerda siendo a la que se analiz gramaticalmente. FB3EH QUEUEN: DEFB 00H Esta variable es usada por ah lo interrumpe manipulador para mantener el nmero de la cola de msica actualmente siendo procesado. Los valores 0, 1 y 2 son propios de A de canales PSG, B y C. FB3FH MUSICF: DEFB 00H Esta variable contiene banderas de tres bits se sedimentan por la rutina del estndar STRTMS a iniciar el procesamiento de una cola de msica por lo interrumpe manipulador. Los aicos 0, 1 y 2 son propios de VOICAQ, VOICBQ y VOICCQ. FB40H PLYCNT: DEFB 00H Esta variable es usada por la rutina del estndar STRTMS para mantener el nmero de "juego" secuencias de declaracin actualmente mantenidas en las colas de msica. Es examinado cuando todo lo que tres fin de la cola demarca ha sido encontrado pues una secuencia a determinar si dequeueing debera ser vuelta a arrancar.
FB41H VCBA: DEFW 0000H; El mueble mostrador de duracin FB43H DEFB 00H; El largo de la cuerda FB44H DEFW 0000H; La direccin de la cuerda FB46H DEFW 0000H; La direccin de datos de la pila FB48H DEFB 00H; El largo del paquete de msica FB49H DEFS 7; El paquete de msica FB50H DEFB 04H; La octava FB51H DEFB 04H; El largo FB52H DEFB 78H; El tiempo FB53H DEFB 88H; El volumen FB54H DEFW 00FFH; El perodo del sobre FB56H DEFS 16; Espacie para los datos de la pila Este treinta y siete byte el amortiguador es usado por el "juego" manipulador de declaracin para sostener los parmetros coetneos para A de voz. FB66H VCBB: DEFS 37 Este amortiguador es usado por el "juego" manipulador de declaracin para sostener los parmetros coetneos para la voz B, su estructura equivale a VCBA. FB8BH VCBC: DEFS 37 Este amortiguador es usado por el "juego" manipulador de declaracin para sostener los parmetros coetneos para la voz C, su estructura equivale a VCBA. FBB0H ENSTOP: DEFB 00H Esta variable determina ya sea lo interrumpe manipulador ejecutar un principio caliente para el Interpreter al detectar el CDIGO de llaves, GRAPH, CTRL y CAMBIO deprimido conjuntamente: El 00H = Disable, NZ = Enable. FBB1H BASROM: DEFB 00H Esta variable determina ya sea el ISCNTC y rutinas del estndar INLIN responder a la clave CTRL-STOP: El 00H = Enable, NZ = Disable. Se usa para impedir terminacin de un BASIC ROM localizado durante la bsqueda que se impulsa arriba ROM. FBB2H LINTTB: DEFS 24 Cada uno de estas veinticuatro variables son normalmente poco cero pero son puestos en el cero si los contenidos de la fila correspondiente de la pantalla se han derramado encima de la siguiente fila. Son mantenidos por los BIOS sino slo realmente usado por la rutina del estndar INLIN (el editor de la pantalla) para discriminar entre rayado lgico y fsico. FBCAH FSTPOS: DEFW 0000H Esta variable se usa para sostener las coordenadas del cursor en la entrada
Para la rutina del estndar INLIN. Su funcin es restringir la extensin de volver hacia atrs realizado cuando el texto es coleccionado de la pantalla en la terminacin.
FBCCH CURSAV: DEFB 00H Esta variable se usa para sostener la pantalla que el carcter reemplaz por el cursor del texto. FBCDH FNKSWI: DEFB 00H Esta variable es usada por la rutina del estndar CHSNS a determinar si las llaves intercambiadas o no intercambiadas de funcin son actualmente exhibidas: El 00H = Cambi De Posicin, 01H Unshifted. FBCEH FNKFLG: DEFS 10 Cada uno de estas diez variables son normalmente cero pero son determinados para 01H si la llave asociada de funcin se ha encendido por una "llave (n) EN" declaracin. Son usados por ah lo interrumpe al manipulador para determinar si, en el modo de programa slo, debera devolver una cadena de caracteres o debera actualizar la entrada asociada en TRPTBL. FBD8H ONGSBF: DEFB 00H Esta variable es normalmente cero pero es incrementada por ah lo interrumpe manipulador cuandoquiera que un dispositivo ha logrado las condiciones necesarias para generar un programa interrumpa. Es usado por el Runloop a determinar si cualquier programa interrumpe est pendiente sin tener que registrar a TRPTBL. FBD9H CLIKFL: DEFB 00H Esta variable es usada internamente por ah lo interrumpe manipulador para impedirlos chasquidos cruciales espurios cundo los personajes mltiples restituidores de una sola depresin crucial como una llave de funcin. FBDAH OLDKEY: DEFS 11 Este amortiguador es usado por ah lo interrumpe manipulador para sostener la condicin previa de la matriz del teclado, cada byte contiene una fila de llaves echando a andar con fila 0. FBE5H NEWKEY: DEFS 11 Este amortiguador es usado por ah lo interrumpe manipulador para sostener la condicin coetnea de la matriz del teclado. Las transiciones de la llave son detectadas en contraste con los contenidos de OLDKEY despus del cual OLDKEY est actualizado con la condicin coetnea. FBF0H KEYBUF: DEFS 40 Este amortiguador contiene los personajes del teclado descifrados producidos por lo interrumpen al manipulador. Noto que el amortiguador es organizado como
- 231 6. El MAPA de MEMORIA Una cola circular conducida por GETPNT y PUTPNT y consecuentemente no tiene punto de partida fijo. FC18H LINWRK: DEFS 40
Este amortiguador es usado por los BIOS para mantener una lnea completa de personajes de la pantalla. FC40H PATWRK: DEFS 8 Este amortiguador es usado por los BIOS para mantener un patrn 8x8 pixel. La RAZ del FC48H: DEFW 8000H Esta variable contiene la direccin de la posicin de la RAM mnima usada por el Interpreter. Su valor acometi energizar y despus inalterado. FC4AH HIMEM: DEFW F380H Esta variable contiene la direccin del byte siguiendo la posicin de la RAM ms alta usada por el Interpreter. Su valor acometi contra que se energiza arriba y despus slo alterado por la declaracin "clara". FC4CH TRPTBL: DEFS 3; LLAVE 1 FC4FH DEFS 3; LLAVE 2 FC52H DEFS 3; LLAVE 3 FC55H DEFS 3; LLAVE 4 FC58H DEFS 3; LLAVE 5 FC5BH DEFS 3; LLAVE 6 FC5EH DEFS 3; LLAVE 7 FC61H DEFS 3; LLAVE 8 FC64H DEFS 3; LLAVE 9 FC67H DEFS 3; LLAVE 10 FC6AH DEFS 3; ALTO FC6DH DEFS 3; El BLOQUE DE OBJETOS MOVIBLES FC70H DEFS 3; STRIG 0 FC73H DEFS 3; STRIG 1 FC76H DEFS 3; STRIG 2 FC79H DEFS 3; STRIG 3 FC7CH DEFS 3; STRIG 4 FC7FH DEFS 3; El INTERVALO FC82H DEFS 3; Sin uso FC85H DEFS 3; Sin uso FC88H DEFS 3; Sin uso FC8BH DEFS 3; Sin uso FC8EH DEFS 3; Sin uso FC91H DEFS 3; Sin uso FC94H DEFS 3; Sin uso FC97H DEFS 3; Sin uso Estas veintiseis tres variables de byte sostienen la condicin coetnea de lo interrumpa generar artificios. El primer byte de cada entrada contiene el estado del dispositivo (el bit 0 = de Adelante, mordido = Stop 1, mordi 2 = Event
procesador y el "dispositivo 0 ON/OFF/STOP" y "el REGRESO" manipuladores de declaracin. Los bytes dos restantes de cada entrada estn listos por ah lo "en DEVICE GOSUB" manipulador de declaracin y contienen la direccin de la lnea de programa para ejecutar en un programa interrumpa. FC9AH RTYCNT: DEFB 00H Esta variable est sin uso por el MSX ROM actual. FC9BH INTFLG: DEFB 00H Esta variable es normalmente cero pero es determinada para 03H o 04H si el CTRL-STOP o llaves de ALTO es detect por ah lo interrumpe al manipulador. FC9CH PADY: DEFB 00H Esta variable contiene la Y coordinada del ltimo punto detectado por un touchpad. FC9DH PADX: DEFB 00H Esta variable contiene la X coordinada del ltimo punto detectado por un touchpad. El MOMENTITO del FC9EH: DEFW 0000H Esta variable es continuamente incrementada por ah lo interrumpe manipulador. Su valor puede ser determinado o puedo leer por la declaracin "de tiempo" o puede funcionar. FCA0H INTVAL: DEFW 0000H Esta variable tiene aplicacin que la duracin de intervalo se sediment por ah lo "en el INTERVALO" el manipulador de declaracin. FCA2H INTCNT: DEFW 0000H Esta variable es continuamente decremented por lo interrumpe manipulador. Cuando el cero es cumplido su valor es puesto a cero de INTVAL y, si aplicable, un programa interrumpa generado. Noto que esta variable siempre cuenta sin distincin de ya sea un "intervalo EN" declaracin es activo. FCA4H LOWLIM: DEFB 31H Esta variable se usa para sostener la duracin admisible mnima del bit de principio tan determinada por la rutina del estndar TAPION. FCA5H WINWID: DEFB 22H Esta variable se usa para sostener la duracin de discriminacin de ciclo LO/HI tan determinada por la rutina del estndar TAPION.
Esta variable es normalmente cero pero es determinada para 01H por la rutina del estndar CNVCHR en la deteccin de un cdigo grfico del encabezado. FCA7H ESCCNT: DEFB 00H Esta variable es usada por el procesador de secuencia de rutina del estndar CHPUT ESC para contar parmetros de escapada. FCA8H INSFLG: DEFB 00H Esta variable es normalmente cero pero es determinada para FFH por la rutina del estndar INLIN cuando el modo de insercin est adelante. FCA9H CSRSW: DEFB 00H Si esta variable es, entonces ponga en el cero el cursor es slo el rato exteriorizado que la rutina del estndar CHGET est esperando a un carcter del teclado. Si es poco ponga en el cero, entonces el cursor es permanentemente exhibido por la rutina del estndar CHPUT. FCAAH CSTYLE: DEFB 00H Esta variable determina el estilo del cursor: El 00H = Block, NZ = Underline. FCABH CAPST: DEFB 00H Esta variable es usada por ah lo interrumpe manipulador para mantener el estado coetneo del cerrojo de gorras: El 00H = Off, NZ = On. FCACH KANAST: DEFB 00H Esta variable se usa para sostener el estado del cerrojo del teclado Kana en mquinas japonesas y el estado TOTALMENTE crucial en mquinas europeas. FCADH KANAMD: DEFB 00H Esta variable sostiene un modo del teclado en mquinas japonesas slo. FCAEH FLBMEM: DEFB 00H Esta variable es determinada por el archivo yo los generadores de error de la / O pero est otrora sin uso. FCAFH SCRMOD: DEFB 00H Esta variable contiene el modo coetneo de la pantalla: El 0=40x24 Text Mode, Mode 1=32x24 Text Mode, 2 = Graphics, 3 = el Multicolor Mode. FCB0H OLDSCR: DEFB 00H Esta variable tiene aplicacin el modo de la pantalla del ltimo set de modo del texto.
FCB1H CASPRV: DEFB 00H Esta variable se usa para creer que cualquier carcter devuelto a uno yo el amortiguador de la / O por la funcin del putback del casete. FCB2H BDRATR: DEFB 00H Esta variable contiene el color de demarcacin para la "pintura" manipulador de declaracin. Su valor es determinado por la rutina del estndar PNTINI y es usado por el SCANR y rutinas del estndar SCANL. FCB3H GXPOS: DEFW 0000H Esta variable sirve para almacenamiento temporal de una coordenada de la X de grficos. FCB5H GYPOS: DEFW 0000H Esta variable sirve para almacenamiento temporal de una coordenada de la Y de grficos. FCB7H GRPACX: DEFW 0000H Esta variable contiene la coordenada coetnea de la X de grficos para la rutina del estndar GRPPRT. FCB9H GRPACY: DEFW 0000H Esta variable contiene la coordenada coetnea de la Y de grficos para la rutina del estndar GRPPRT. FCBBH DRWFLG: DEFB 00H Los aicos 6 y 7 de esta variable son determinadas por el "empate" declaracin "N" y "B" manipuladores de orden para revolver el modo asociado adelante. FCBCH DRWSCL: DEFB 00H Esta variable es usada por el "empate" manipulador de orden de declaracin "S" para sostener el factor coetneo de escala. FCBDH DRWANG: DEFB 00H Esta variable es usada por la "A" de declaracin de "empate" manipulador de orden para mantener el ngulo actual. FCBEH RUNBNF: DEFB 00H Esta variable es normalmente cero pero es determinada por el "BLOAD" manipulador de declaracin cuando una "interrogacin" andada en automvil parmetro es especificada. FCBFH SAVENT: DEFW 0000H Esta variable contiene al "BSAVE" y "BLOAD" direccin de entrada.
FCC1H EXPTBL: DEFB 00H; La Ranura Primaria 0 FCC2H DEFB 00H; La Ranura Primaria 1 FCC3H DEFB 00H; La Ranura Primaria 2 FCC4H DEFB 00H; La Ranura Primaria 3 Cada uno de estas cuatro variables son normalmente cero pero son determinados para 80H durante la bsqueda que se impulsa arriba de la RAM si el Slot Primario asociado - se encuentra - es expandido. FCC5H SLTTBL: DEFB 00H; La Ranura Primaria 0 FCC6H DEFB 00H; La Ranura Primaria 1 FCC7H DEFB 00H; La Ranura Primaria 2 FCC8H DEFB 00H; La Ranura Primaria 3 Estas cuatro variables multiplican por dos los contenidos del cuatro Slot Secundario posible Registers. Los contenidos de cada variable slo deberan ser supuestos tan vlidos si EXPTBL muestra al Slot Primario asociado ser expandido. FCC9H SLTATR: DEFS 4; PS0, SS0 FCCDH DEFS 4; PS0, SS1 FCD1H DEFS 4; PS0, SS2 FCD5H DEFS 4; PS0, SS3 FCD9H DEFS 4; PS1, SS0 FCDDH DEFS 4; PS1, SS1 FCE1H DEFS 4; PS1, SS2 FCE5H DEFS 4; PS1, SS3 FCE9H DEFS 4; PS2, SS0 FCEDH DEFS 4; PS2, SS1 FCF1H DEFS 4; PS2, SS2 FCF5H DEFS 4; PS2, SS3 FCF9H DEFS 4; PS3, SS0 FCFDH DEFS 4; PS3, SS1 FD01H DEFS 4; PS3, SS2 FD05H DEFS 4; PS3, SS3 Estas sesenta y cuatro variables contienen los atributos de cualquier extensin que los ROMs encontraron durante la bsqueda que se impulsa arriba ROM. Las caractersticas de cada 16 KB ROM estn codificadas en un solo byte as es que cuatro bytes son precisados para cada ranura posible. La codificacin es: Mordido programa de = BASIC de 7 sets Mordido manipulador = Device de 6 sets Mordido manipulador = Statement de 5 sets Note que las entradas para pgina 0 (0000H para 3FFFH) y pgina 3 (C000H para FFFFH) siempre sern cero como slo pgina 1 (4000H para 7FFFH) y pgina 2 (8000H para BFFFH) es de hecho examinado. La convencin MSX es que los ROMs de la extensin de cdigo de la mquina son colocados en la pgina 1 y programa de BASIC que los ROMs de adentro mandan a llamar 2. - 236 -
6. El MAPA de MEMORIA FD09H SLTWRK: DEFS 128 Este amortiguador provee dos bytes de rea de trabajo local para cada uno de los sesenta y cuatro ROMs posibles de la extensin. FD89H PROCNM: DEFS 16 Este amortiguador se usa para mantener un dispositivo o nombre de declaracin para examen por una extensin ROM. El DISPOSITIVO del FD99H: DEFB 00H Esta variable se usa para pasar un cdigo del dispositivo, de 0 para 3, para una extensin ROM. Los Hooks El captulo del Workspace Area de FD9AH para FFC9H contiene ciento doce ganchos, cada uno del cual se llena de cinco opcodes Z80 RET en que se energiza arriba. Estos son llamados de posiciones estratgicas dentro del BIOS / Interpreter a fin de que el ROM puede estar extendido, particularmente a fin de que puede ser mejorado para el BASIC Disk. Cada gancho tiene suficiente cuarto para hacer una llamada lejana cumplir cualquier ranura: RST 30H DEFB Haga Una Ranura En Idaho DEFW Address ENRE Los ganchos estn listados en las siguientes pginas conjuntamente con la direccin de las que ellos son llamadas y una nota del resumen en lo que se refiere a su funcin. FD9AH HKEYI: DEFS 5; El manipulador del 0C4AH Interrupt FD9FH HTIMI: DEFS 5; El manipulador del 0C53H Interrupt FDA4H HCHPU: DEFS 5; La rutina del estndar 08C0H CHPUT FDA9H HDSPC: DEFS 5; El cursor del 09E6H Display FDAEH HERAC: DEFS 5; El cursor del 0A33H Erase FDB3H HDSPF: DEFS 5; La rutina del estndar 0B2BH DSPFNK FDB8H HERAF: DEFS 5; La rutina del estndar 0B15H ERAFNK FDBDH HTOTE: DEFS 5; La rutina del estndar 0842H TOTEXT FDC2H HCHGE: DEFS 5; La rutina del estndar 10CEH CHGET FDC7H HINIP: DEFS 5; La copia del 071EH el smbolo se sediment para VDP FDCCH HKEYC: DEFS 5; El decodificador del 1025H Keyboard FDD1H HKYEA: DEFS 5; El decodificador del 0F10H Keyboard FDD6H HNMI: DEFS 5; La rutina del estndar 1398H NMI FDDBH HPINL: DEFS 5; La rutina del estndar 23BFH PINLIN FDE0H HQINL: DEFS 5; La rutina del estndar 23CCH QINLIN FDE5H HINLI: DEFS 5; La rutina del estndar 23D5H INLIN FDEAH HONGO: DEFS 5; 7810H "en DEVICE GOSUB" FDEFH HDSKO: DEFS 5; 7C16H "DSKO$" FDF4H HSETS: DEFS 5; 7C1BH "se sediment" FDF9H HNAME: DEFS 5; 7C20H "nombre" - 237 -
6. El MAPA de MEMORIA
FDFEH HKILL: DEFS 5; 7C25H "presa" FE03H HIPL: DEFS 5; 7C2AH "IPL" FE08H HCOPY: DEFS 5; 7C2FH "cpiese" FE0DH HCMD: DEFS 5; 7C34H "CMD" FE12H HDSKF: DEFS 5; 7C39H "DSKF" FE17H HDSKI: DEFS 5; 7C3EH "DSKI$" FE1CH HATTR: DEFS 5; 7C43H "ATTR$" FE21H HLSET: DEFS 5; 7C48H "LSET" FE26H HRSET: DEFS 5; 7C4DH "RSET" FE2BH HFIEL: DEFS 5; 7C52H "campo" FE30H HMKI$: DEFS 5; 7C57H "MKI$" FE35H HMKS$: DEFS 5; 7C5CH "MKS$" FE3AH HMKD$: DEFS 5; 7C61H "MKD$" FE3FH HCVI: DEFS 5; 7C66H "CVI" FE44H HCVS: DEFS 5; 7C6BH "CVS" FE49H HCVD: DEFS 5; 7C70H "CVD" FE4EH HGETP: DEFS 5; El 6A93H Locate FCB FE53H HSETF: DEFS 5; El 6AB3H Locate FCB FE58H HNOFO: DEFS 5; 6AF6H "brase" FE5DH HNULO: DEFS 5; 6B0FH "brase" FE62H HNTFL: DEFS 5; El 6B3BH Close yo el amortiguador de la / O 0 FE67H HMERG: DEFS 5; 6B63H "MERGE/LOAD" FE6CH HSAVE: DEFS 5; 6BA6H "salvo" FE71H HBINS: DEFS 5; 6BCEH "salvo" FE76H HBINL: DEFS 5; 6BD4H "MERGE/LOAD" FE7BH HFILE: DEFS 5; 6C2FH "archivos" FE80H HDGET: DEFS 5; 6C3BH "GET/PUT" FE85H HFILO: DEFS 5; La salida del 6C51H Sequential Las CIERVAS del FE8AH: DEFS 5; La entrada del 6C79H Sequential FE8FH HRSLF: DEFS 5; 6CD8H "INPUT$" FE94H HSAVD: DEFS 5; 6D03H "LOC", 6D14H "LOF" ; 6D25H "EOF", 6D39H "FPOS" FE99H HLOC: DEFS 5; 6D0FH "LOC" FE9EH HLOF: DEFS 5; 6D20H "LOF" FEA3H HEOF: DEFS 5; 6D33H "EOF" FEA8H HFPOS: DEFS 5; 6D43H "FPOS" FEADH HBAKU: DEFS 5; 6E36H "revista INSUMO" FEB2H HPARD: DEFS 5; El nombre del dispositivo del 6F15H Parse FEB7H HNODE: DEFS 5; El nombre del dispositivo del 6F33H Parse FEBCH HPOSD: DEFS 5; El nombre del dispositivo del 6F37H Parse FEC1H HDEVN: DEFS 5; Este gancho no es usado. FEC6H HGEND: DEFS 5; El 6F8FH yo el repartidor de funcin de la / O FECBH HRUNC: DEFS 5; El 629AH claro en la carrera FED0H HCLEA: DEFS 5; El 62A1H claro en la carrera FED5H HLOPD: DEFS 5; El 62AFH claro en la carrera FEDAH HSTKE: DEFS 5; El 62F0H Volvi A Arrancar pila FEDFH HISFL: DEFS 5; La rutina del estndar 145FH ISFLIO FEE4H HOUTD: DEFS 5; La rutina del estndar del 1B46H OUTDO FEE9H HCRDO: DEFS 5; 7328H CR, LF a SUPERAR FEEEH HDSKC: DEFS 5; 7374H Mainloop revista insumo FEF3H HDOGR: DEFS 5; El empate del 593CH Line FEF8H HPRGE: DEFS 5; El fin del 4039H Program FEFDH HERRP: DEFS 5; El manipulador del 40DCH Error
FF07H HREAD: DEFS 5; 4128H Mainloop "Oklahoma" FF0CH HMAIN: DEFS 5; 4134H Mainloop FF11H HDIRD: DEFS 5; 41A8H Mainloop dirija declaracin FF16H HFINI: DEFS 5; 4237H Mainloop termin FF1BH HFINE: DEFS 5; 4247H Mainloop termin FF20H HCRUN: DEFS 5; 42B9H Tokenize FF25H HCRUS: DEFS 5; 4353H Tokenize FF2AH HISRE: DEFS 5; 437CH Tokenize FF2FH HNTFN: DEFS 5; 43A4H Tokenize FF34H HNOTR: DEFS 5; 44EBH Tokenize FF39H HSNGF: DEFS 5; 45D1H "para" FF3EH HNEWS: DEFS 5; La declaracin nueva 4601H Runloop FF43H HGONE: DEFS 5; 4646H Runloop ejecute FF48H HCHRG: DEFS 5; La rutina del estndar 4666H CHRGTR FF4DH HRETU: DEFS 5; 4821H "regrese" FF52H HPRTF: DEFS 5; 4A5EH "escriba en letras de imprenta" FF57H HCOMP: DEFS 5; 4A54H "escriba en letras de imprenta" FF5CH HFINP: DEFS 5; 4AFFH "escriba en letras de imprenta" FF61H HTRMN: DEFS 5; El error de "lectura /entrada" 4B4DH FF66H HFRME: DEFS 5; El Evaluatodor del 4C6DH Expression FF6BH HNTPL: DEFS 5; El Evaluatodor del 4CA6H Expression FF70H HEVAL: DEFS 5; El Evaluatodor del 4DD9H Factor FF75H HOKNO: DEFS 5; El Evaluatodor del 4F2CH Factor FF7AH HFING: DEFS 5; El Evaluatodor del 4F3EH Factor FF7FH HISMI: DEFS 5; 51C3H Runloop ejecute FF84H HWIDT: DEFS 5; 51CCH "anchura" FF89H HLIST: DEFS 5; 522EH "escore" FF8EH HBUFL: DEFS 5; 532DH Detokenize FF93H HFRQI: DEFS 5; El 543FH Convert para el entero FF98H HSCNE: DEFS 5; El nmero del 5514H Line para puntero FF9DH HFRET: DEFS 5; El descriptor del 67EEH Free FFA2H HPTRG: DEFS 5; La bsqueda del 5EA9H Variable FFA7H HPHYD: DEFS 5; La rutina del estndar 148AH PHYDIO FFACH HFORM: DEFS 5; La rutina del estndar del FORMATO del 148EH FFB1H HERRO: DEFS 5; El manipulador del 406FH Error FFB6H HLPTO: DEFS 5; La rutina del estndar 085DH LPTOUT FFBBH HLPTS: DEFS 5; La rutina del estndar 0884H LPTSTT FFC0H HSCRE: DEFS 5; 79CCH "filtre" FFC5H HPLAY: DEFS 5; 73E5H "juegue" declaracin El Workspace Area de FFCAH para FFFFH es no acostumbrado. (En MSX 1)
- 239 -
El NDICE
"El SISTEMA DE FRENOS ABS" 97 CLIKFL 57, 231 ngulos 152 CLIKSW 57, 197, 212 ARG 90, 223 CLINEF 152, 225 el almacenamiento Array 155, 162, 208 Recortndole 70 ARYTAB 137, 208, 220 CLMLST 126, 211 "ASC" 168 "CLOAD" 180 ASPCT1 77, 215 CLOC 70, 225 ASPEC2 77, 215 "le cierran" 173 ASPECTO 150, 225 CLPRIM 31, 210 "ATN" 93 "Lingsticas Computacionales" 41 ATRBAS 34, 225 CMASK 70, 225 ATRBYT 69, 72, 76, 144, 214 "CMD" 202 "ATTR$" 203 CNPNTS150, 225 AUTFLG 116, 219 CNSDFG 49, 212 AUTINC 116, 219 Coincidence 9, 52 AUTLIN 116, 219 "predisponen" 197 "automvil" 125 Colores 12, 39, 40, 77 CONLO 121, 217 BAKCLR 39, 213 cdigos Control 44 "basan" 200, 201 CONSAV 121, 217 BASROM 32, 86, 230 "CONT" 162 tasa Baud 79, 197 CONTXT 121, 217 BDRATR 77, 235 CONTYP 121, 217 BDRCLR 40, 213 Coordenadas, grfico 70, 143 "emiten un pip" 60 Coordenadas, el texto 42, 47, 51 "N$" que 165 "emulan" 202 "BLOAD" 177 "Colorados" 92 MS BAJO 204, 232 CPCNT8 152, 226 Boundary inflexin 148 CPLOTF 150, 226 "BSAVE" 177 Crash 30 BUF 85, 127176, 216 CRCSUM 151, 226 CRTCNT 47, 51, 211 "la LLAMADA" 140 LED CS1200 197, 214 Caps 6, 57 CS2400 197, 214 CAPST 57, 234 "CSAVE" 179 CASPRV 184, 235 CSAVEA 78, 149, 226 la entrada Cassette 24, 81 CSAVEM 78, 149, 226 el motor Cassette 6, 65, 78 CSCLXY 150, 226 la salida Cassette 6, 79 "CSNG" 100 "CDBL" 100 "CSRLIN" 196 CENCNT 150, 225 CSRSW 45, 234 CGPBAS 34, 224 CSRX 43, 212 CGPNT 38, 204, 224, 256 CSRY 43, 212 el conjunto de caracteres 3884, 256 CSTCNT 150, 226 "CHR$" 168 CSTYLE 45, 85, 234 "CINT" 99 CTRLSTOP 32, 33, 42, 57, 59 "rodean" 150 CURLIN 56, 115, 116, 216 "claro" 163 CURSAV 46, 231
- I1 El NDICE
El cursor 13, 32, 42, 43, 46 Expander 4 "CVD" 204 Extension ROM 30, 140, 178, 205 "CVI" 203 el Evaluatodor Expression 128 "CVS" 204 EXPTBL 5, 32, 236 CXOFF 152, 226 CYOFF 152, 226 el Evaluatodor Factor 129 FBUFFR 106, 137, 222 DAC 90, 223 "el CAMPO" 203 "datos" 123 File Control Block 66, 209 reas Data 26 "archivos" 173 DATLIN 115, 128, 218 Filespec 171 DATPTR 161, 220 FILNAM 171, 180, 224 Totalmente le teclean 56, 58 FILNM2 181, 224 "DEFDBL" 121 FILTAB 208, 223 "DEFFN" que 134 "se vengan de" 101 "DEFINT" 121 FLGINP 127, 219 "DEFSNG" 121 "FN" 134 "DEFSTR" 12I FNKFLG 56, 231 DEFTBL 121, 221 FNKSTR 65, 224 "DEFUSR" 134 "PARA "119" LE SUPRIME "137 FORCLR 40, 213 Dequeueing 60" FPOS "175
DISPOSITIVO 142, 237" FRE "171 Device 140, 171, 178 FRETOP 159, 208, 218" DBIL "155 FSTPOS 84, 88, 230 DIMFLG 155, 217 FUNACT 159, 222 PUNTEAN 115, 219 direcciones Function 110, 130" LE SACAN "153 despliegue crucial Function 49, 53 DRWANG 154, 235 llaves Function 56, 58, 65 DRWFLG 154, 235 DRWSCL 154, 235" GET "193" DSKF "202 GETPNT 33, 59, 214" DSKI$ " 203"GOSUB" 122 "DSKO$" 202 "GOTO" 123 Los personajes grficos 42 Editor 84 Graphic no devuelven a 69 llaves Edit 85 GRPACX 69, 143, 235 123, 125 GRPACY 69, 143, 235 "le acaban" 161 GRPATR 36, 212 ENDFOR 119, 218 GRPHED 42, 234 ENSTOP 53, 230 GRPNAM 36, 212 "EOF" 175 GRPPAT 36, 212 "ERASE" 162 GXPOS 144, 235 "ERL" 130 GYPOS 144, 235 "ERR" 130 ERRFLG 115, 130, 215 ENCABEZADO 79, 215 ERRLIN 115, 125, 130, 219 "HEX$" 165 "error" 125 HIMEM 163, 204206, 232 generadores Error 115, 176 Ganchos 30, 204, 237 el manipulador Error 115 mensajes Error 113 "la DECLARACIN IF" 125 ERRTXT 115, 125, 220 "INKEY$" 187 ESCCNT 43, 234 "INP" 114 "EXP" 94 "introducen en la computadora" 127
- I2 El NDICE
"INPUT$" 174 LPTPOS 83, 125, 132, 215 Input, teclado 53, 59 "LSET" 203 INSFLG 85, 234 "INSTR" 170 el analizador gramatical Macro 142 "INT" 101 Mainloop 116 INTCNT 52, 233 constantes Math 97 el modo Interrupt 32 operadores Math 112 Interrupts 9, 52, 56, 161 MAXDEL 147, 225 "el INTERVALO" 194 MAXFIL 171, 223 INTFLG 32, 57, 233 "MAXFILES" 206 INTVAL 52, 233 MAXUPD 147, 213 yo / O Buffer 66, 125, 130, 171 MCLFLG 142, 188, 227 yo / OEl repartidor 178 MCLLEN 142, 188, 229 "IPL" 202 MCLPTR 142, 188, 229 MCLTAB 142, 188, 227 japons 4, 26, 58, 88 MEMSIZ 159, 163, 208, 217 el MOMENTITO 52, 196, 233 "mancomunan" 172 Joystick 24, 52, 63 "MID$" 169, 170 MINDEL 147, 225 KANAMD 33, 234 MINUPD 147, 213 KANAST 58, 234 "MKD$" 203 Kansas City 79 "MKI$" 203 KBUF 116, 118, 216 "MKS$" que 203 "teclean" 195 MLTATR 36, 212 Keyboard 5, 53, 55, 66 MLTNAM 36, 212 KEYBUF 33, 231 MLTPAT 36, 212 Key dan un clic sobre 6, 57, 58 nmeros Cruciales 187 "motores" 54 MOVCNT 149, 227 Palabras Claves, el BASIC 110 MUSICF 52, 62, 229 "presa" 202 paquete Music 61, 193 "LEFT$" 169 NAMBAS 34, 224 "LEN" 168 "nombran" 202 "le dejaron" 123 "nuevos" 159 "LFILES" 173 NEWKEY 53, 231 "la LNEA" 145 Newton-Raphson 93 "entrada de la LNEA" 126 "siguientes" 164 Line nmeros 117, 118, 119, 122 NLONLY 159, 224 Enlaces 117 NOFUNS 135, 156, 222 LINL32 34, 211 NTMSXP 83, 197, 216 LINL40 34, 211 NULBUF 208, 223 LINLEN 34, 211 la salida Numrica 106 LINTTB 39, 84, 230 tipos Numricos 104 LINWRK 46, 232 "escoran"137 "OCT$" 164 "LLIST" 136 OLDKEY 33, 53, 231 "le cargan" 172 OLDLIN 115, 162, 220 "LOC" 174 OLDSCR 34, 136, 234 "LOCATE" 193 OLDTXT 60, 115, 159, 162, 220 "LOF" 174 "en" 124 "le ponen en bitcora" 93 ONEFLG 124, 159, 220 LOWLIM 81, 233 ONELIN 115, 124, 159, 220 "LPOS" 132 ONGSBF 56, 160, 231 "LPRINT" que 125 "abren" 172
- I3 El NDICE
"Fuera de" 114 "reanuda" 124 Salida, Interpreter que 82 "devuelven" 123 Output, pantalla 43, 69 RGOSAV 35, 212 "RIGHT$" que 169 "acolchan" 197 "RND" 94 el Remo 25, 64 RNDX 94, 159, 223 PADX 65, 233 "RSET" 203 PADY 65, 233 "dirigen" 122 Page 3 RUNBNF 177, 235
"pintan" 148 Runloop 120 PARM1 135 156, 221 PARM2 135 222 "le salvan" 172 PATBAS 34, 224 SAVENT 179, 235 PATWRK 69, 232 SAVSTK 115, 120, 159, 219 "PDL" 196 SAVTXT 120, 219 "atisbo" 138 SCNCNT 52, 214 "juego" 188, 196 "pantalla" 197 PLYCNT 62189, 229 SCRMOD 34, 136, 234 "ensean con el dedo a" 144 Slot Secundario 4, 30, 32 Punteros 118, 139 "le colocan" 202 "pinchazo" 138 "SGN" 98 "el PECADO" 95 Polynomial 92 "de punto de venta" 132 SKPCNT 149, 227 que se energizan arriba 32, 204 Slot Idaho 29, 140, 205 Precedence 112, 129 SLTATR 140, 205, 236 "preprogramado" 144 SLTTBL 32, 236 Primary Slot 3, 30, 32, 66 "suenan" 188 "estampado" 125 "SPACE$" 169 Printer 33, 41, 83 "bloque de objetos movibles"194, 197, 198 PRMLEN 159, 221 Bloques De Objetos Movibles 9, 18, 37, 199 PRMLN2 159, 222 "SQR" 93 PRMSTK 159, 221 Stack le espacian 159 PROCNM 140, 237 rutinas Estndar 26 almacenamiento Program 117, 208 direcciones Statement 109, 136 PRSCNT 188 228 STATFL 52, 213 PRTFLG 83, i25, 215 "vara" 196 "PSET" 144 STKTOP 159, 163, 209, 217 PSG 21, 33, 34, 60, 190 "alto" 161, 194 PTRFIL 66, 125, 223 "STR$" 165 "puesto" 193 STREND 137208, 220 PUTPNT 33, 59, 214 "STRIG" 194, 196 "STRING$" 168 QUEBAK 68, 228 el almacenamiento String 133, 163, 166, 168 QUETAB 34, 67, 228 SUBFLG 155, 218 Queue 60, 67, 68, 189 "intercambian" 162 QUEUEN 62, 229 SWPTMP 162, 222 COLAS 68, 214 T32ATR 34, 211 RDPRIM 30 210 T32CGP 34, 211 "leen" 12; T32NAM 34, 211 "REM" 123 T32PAT 34, 211 "RENUM" que 138 "broncean" 93 REPCNT 53, 214 TEMPPT 159, 218 "restituyen" 161 TEMPST 124, 218
- I4 El NDICE
"Cronomtrele" 196 Seales 111, 117, 118, 121, 137 Touchpad 25, 64 TRCFLG 120, 222 TRGFLG 52, 213 "TROFF" 162 "TRON" 162 TRPTBL 32, 56, 160, 194, 232 TTYPOS 43, 125, 132, 216 TXTCGP 34, 211 TXTNAM 34 211 TXTTAB 117, 204, 208, 218 Tipos 140 "USR" 133 USRTAB 133, 210 "VAL" 169 VALTYP 104, 217 el almacenamiento Variable 135, 155, 208 "VARPTR" 130 VARTAB 137, 208, 220 VCBA 34, 61, 67, 230 "VDP" 199, 200 VDP Address Register 8, 40 VDP Mode Registers 9, Modes 35 VDP 10, 13, 34, 41 VDP Status Register 9, 52, 65 VDP Cronometrndole 39 "VPEEK" 201 "VPOKE" 201 VLZADR 115, 216 VLZDAT 115, 216 "Espera" 114 Wait condicin 81 el principio Caliente 53 "la ANCHURA" 136 WINWID 81, 233 Workspace Area 32, 208 WRPRIM 30, 210 El Reloj Del Z80 81