The translation is temporarily closed for contributions due to maintenance, please come back later.
Context English Portuguese (Brazil) State
An interrupt is requested with number <literal>0x1a</literal> and argument <literal>0</literal> in register <literal>%ah</literal>. The <acronym>BIOS</acronym> has a predefined set of services, requested by applications as software-generated interrupts through the <literal>int</literal> instruction and receiving arguments in registers (in this case, <literal>%ah</literal>). Here, particularly, we are requesting the number of clock ticks since last midnight; this value is computed by the <acronym>BIOS</acronym> through the <acronym>RTC</acronym> (Real Time Clock). This clock can be programmed to work at frequencies ranging from 2 Hz to 8192 Hz. The <acronym>BIOS</acronym> sets it to 18.2 Hz at startup. When the request is satisfied, a 32-bit result is returned by the <acronym>BIOS</acronym> in registers <literal>%cx</literal> and <literal>%dx</literal> (lower bytes in <literal>%dx</literal>). This result (the <literal>%dx</literal> part) is copied to register <literal>%di</literal>, and the value of the <varname>TICKS</varname> variable is added to <literal>%di</literal>. This variable resides in <filename>boot0</filename> at offset <literal>_TICKS</literal> (a negative value) from register <literal>%bp</literal> (which, recall, points to <literal>0x800</literal>). The default value of this variable is <literal>0xb6</literal> (182 in decimal). Now, the idea is that <filename>boot0</filename> constantly requests the time from the <acronym>BIOS</acronym>, and when the value returned in register <literal>%dx</literal> is greater than the value stored in <literal>%di</literal>, the time is up and the default selection will be made. Since the RTC ticks 18.2 times per second, this condition will be met after 10 seconds (this default behavior can be changed in the <filename>Makefile</filename>). Until this time has passed, <filename>boot0</filename> continually asks the <acronym>BIOS</acronym> for any user input; this is done through <literal>int 0x16</literal>, argument <literal>1</literal> in <literal>%ah</literal>. Uma interrupção é solicitada com o número <literal>0x1a</literal> e argumento <literal> </literal> no registrador <literal>%ah</literal>. A <acronym>BIOS</acronym> possui um conjunto predefinido de serviços, solicitados pelos aplicativos como interrupções geradas por software através de uma instrução <literal>int</literal> e receber argumentos nos registradores (neste caso, <literal>%ah</literal>). Aqui, particularmente, estamos solicitando o número de pulsos de clock desde a última meia-noite; esse valor é computado pela <acronym>BIOS</acronym> por meio do <acronym>RTC</acronym> (Real Time Clock). Este clock pode ser programado para funcionar em frequências que variam de 2 Hz a 8192 Hz. A <acronym>BIOS</acronym> define isso a 18,2 Hz na inicialização. Quando a solicitação é satisfeita, um resultado de 32 bits é retornado pela <acronym>BIOS</acronym> em registradores <literal>%cx</literal> e <literal>%dx</literal> (bytes inferiores em <literal>%dx</literal> ). Este resultado (a parte <literal>%dx</literal>) é copiado para registrador <literal>%di</literal> e o valor das variáveis <varname>TICKS</varname> � adicionado ao <literal>%di</literal> . Esta variável reside em <filename>boot0</filename> no deslocamento <literal>_TICKS</literal> (um valor negativo) do registrador <literal>%pb</literal> (que, lembre-se, aponta para <literal>0x800</literal> ). O valor padrão desta variável é <literal>0xb6</literal> (182 em decimal). Agora, a ideia é que <filename>boot0</filename> constantemente solicita o tempo da <acronym>BIOS</acronym>, e quando o valor retornado no registro <literal>%dx</literal> é maior que o valor armazenado em <literal>%di</literal>, o tempo acabou e a seleção padrão será feita. Como o RTC é de 18,2 vezes por segundo, essa condição será atendida após 10 segundos (esse comportamento padrão pode ser alterado no <filename>Makefile</filename> ). Até que esse tempo tenha passado <filename>boot0</filename> continuamente pede à <acronym>BIOS</acronym> por qualquer entrada do usuário; isso é feito através <literal>int 0x16</literal> argumento <literal>1</literal> em <literal>%ah</literal>.
#define XREADORG 0x725
#define XREADORG 0x725
The next step is to initialize the <acronym>TSS</acronym> (Task-State Segment). The <acronym>TSS</acronym> is a hardware feature that helps the operating system or executive software implement multitasking functionality through process abstraction. The IA-32 architecture demands the creation and use of <emphasis>at least</emphasis> one <acronym>TSS</acronym> if multitasking facilities are used or different privilege levels are defined. Since the <filename>boot2</filename> client is executed in privilege level 3, but the <acronym>BTX</acronym> server does in privilege level 0, a <acronym>TSS</acronym> must be defined: O próximo passo é inicializar o <acronym>TSS</acronym> (Task-State Segment). O <acronym>TSS</acronym> é um recurso de hardware que ajuda o sistema operacional ou o software executivo a implementar a funcionalidade multitarefa por meio da abstração do processo. A arquitetura IA-32 exige a criação e o uso de <emphasis>ao menos</emphasis> um <acronym>TSS</acronym> se forem usados ​​recursos multitarefa ou se forem definidos níveis de privilégios diferentes. Porque o cliente <filename>boot2</filename> é executado no nível de privilégio 3, mas o servidor <acronym>BTX</acronym> executado no nível de privilégio 0, um <acronym>TSS</acronym> deve ser definido: