Conteúdo:

Modos de trabalhar com arquivos
Método FCB
Métodos de canais de comunicação
Dicionário de Computação (em inglês)

Modos de trabalhar com arquivos.

Há dois modos de trabalhar com arquivos. O primeiro é através de FCB ( blocos de controle de arquivo), o segundo é através de canais de comunicação, também conhecidos como handles.

O primeiro modo de manusear arquivos tem sido usado desde o sistema operacional CPM, predecessor do DOS, logo permite certas compatibilidades com muitos arquivos velhos do CPM bem como com a versão 1.0 do DOS, além deste método permitir-nos ter um número ilimitado de arquivos abertos ao mesmo tempo. Se você quiser criar um volume para o disco, a única forma é através deste método.

Depois de considerarmos as vantagens de FCB, o uso do método de Canais de Comunicação é muito simples e permite-nos um melhor manuseio de erros.

Para uma melhor facilidade, daqui por diante nos referiremos aos Blocos de Controle de Arquivo como FCBs e aos Canais de Comunicação como handles.

Método FCB.

Introdução
Abertura de arquivo
Criar um novo arquivo
Escrita seqüencial
Leitura seqüencial
Leitura e escrita randômica
Fechar um arquivo

INTRODUÇÃO

Há dois tipos de FCB, o normal, cujo comprimento é 37 bytes, e o extendido, com 44 bytes. Neste tutorial iremos assumir o primeiro, ou seja, quando falarmos em FCB, estaremos fazendo referência ao tipo normal (37 bytes).

O FCB é composto de informações dadas pelo programador e por informações que ele toma diretamente do sistema operacional. Quando estes tipos de arquivos são usados, só é possível se trabalhar no diretório corrente, pois FCBs não fornecem suporte ao sistema de organização de arquivos através de diretórios do DOS.

FCB é composto pelos seguintes campos:

  POSIÇÃO    COMPRIMENTO   SIGNIFICADO
    00H         1 Byte       Drive
    01H         8 Bytes      Nome do arquivo
    09H         3 Bytes      Extensão       
    0CH         2 Bytes      Número do bloco
    0EH         2 Bytes      Tamanho do registro
    10H         4 Bytes      Tamanho do arquivo
    14H         2 Bytes      Data de criação
    16H         2 Bytes      Hora de criação
    18H         8 Bytes      Reservado
    20H         1 Bytes      Registro corrente
    21H         4 Bytes      Registro randômico

Para selecionar o drive de trabalho, assuma: drive A = 1; drive B = 2; etc. Se for usado 0, o drive que está sendo usado no momento será tomado como opção.

O nome do arquivo deve ser justificado à esquerda e é necessário preencher com espaços os bytes remanescentes, a extensão é colocada do mesmo modo.

O bloco corrente e o registro corrente dizem ao computador que registro será acessado nas operações de leitura e escrita. Um bloco é um grupo de 128 registros. O primeiro bloco de arquivo é o bloco 0. O primeiro registro é o registro 0, logo o último registro do primeiro bloco deve ser o 127, uma vez que a numeração é iniciada com 0 e o bloco pode conter 128 registradores no total.

Abertura de arquivos.

Para abrir um arquivo FCB é usada a função 0FH da interrupção 21h. A unidade, o nome e a extensão do arquivo devem ser inicializadas antes da abertura.

O registrador DX deve apontar para o bloco. Se o valor FFH é retornado no registrador AH quando da chamada da interrupção, então o arquivo não foi encontrado. Se tudo der certo, o valor 0 é retornado.

Se o arquivo é aberto, então o DOS inicializa o bloco corrente em 0, o tamanho do registro para 128 bytes. O tamanho do arquivo e a sua data são preenchidos com as informações encontradas no diretório.

Criando um novo arquivo.

Para a criação de arquivos é usada a função 16H da interrupção 21h.

O registrador DX deve apontar para uma estrutura de controle cujo os requisitos são de que pelo menos a unidade lógica, o nome e a extensão do arquivo sejam definidas.

Caso ocorra problema, o valor FFH deve retornar em AL, de outra forma este registrador conterá o valor 0.

Escrita seqüencial.

Antes de conseguirmos realizar escrita para o disco, é necessário definir a área de transferência de dados usando, para tanto, a função 1AH da interrupção 21h.

A função 1AH não retorna qualquer estado do disco nem da operação. Mas a função 15H, que usaremos para escrever para o disco, faz isso no registrador AL. Se este for igual a zero, então não há erro e os campos de registro corrente e de bloco são atualizados.

Leitura seqüencial.

Antes de tudo, devemos definir a área de transferência de arquivo ou DTA. Para a leitura seqüencial usaremos a função 14H da interrupção 21h.

O registro a ser lido é definido pelos campos registro e bloco corrente. O registrador AL retorna o estado da operação. Se AL contém o valor 1 ou 3, significa que foi atingido o fim do arquivo. Um valor 2, por sua vez, significa que o FCB está estruturado erroneamente.

Caso não ocorra erro, AL conterá o valor 0 e os campos de registro e bloco corrente são atualizados.

Leitura e escrita randômica.

A função 21H e a função 22H da insterrupção 21h são usadas à realização, respectivamente, da escrita e leitura randômica.

O número de registro randômico e o bloco corrente são usados para calcular a posição relativa do registro a ser lido ou escrito.

O registrador AL retorna a mesma informação do que par a escrita e leitura seqüencial. A informação a ser lida será retornada na área de transferência do disco, bem como a informação a ser escrita retorna na DTA.

Fechando um arquivo.

Para fechar um arquivo usamos a função 10H da interrupção 21h.

Se após invocar esta função, o regisatrador AL conter o valor FFH, significa que o arquivo foi mudado de posição, o disco foi mudado ou há erro de acesso a disco.

Canais de comunicação.

Trabalhando com handles
Funções para usar handles

TRABALHANDO COM HANDLES

O uso de handles para gerenciar arquivos traz grandes facilidades na criação de arquivos e o programador pode concentrar-se em outros aspectos da programação sem preocupar-se com detalhes que podem ser manuseados pelo sistema operacional.

A facilidade dos handles consiste em que para operarmos sobre um arquivo é apenas necessário definirmos o nome do mesmo e o número de handle a usar, todo o resto da informação é manuseada internamente pelo DOS.

Quando usamos este método para trabalhar com arquivos, não há distinção entre acesso seqüencial ou randômico, o arquivo é simplesmente tomado como uma rede de bytes.

FUNÇÕES PARA USAR HANDLES

As funções usadas para o manuseio de arquivos atravé de handles são descritas na unit 6: Interrupções, na seção dedicada à interrupção 21h.

WG
Powered by WebGlimpse