Da “disco flexível mau de formato trilha 0”
Este programa está usado formatar aqueles discos flexíveis que têm setores maus em sua trilha 0 e quando são formatados com DOS ou janelas, mensagens de erro da exposição como da “o BAD trilha 0”. Entretanto você pode também usá-lo formatar discos flexíveis normais.
O coding do programa foi dado no disco incluído com este livro com o nome “TTFORMAT.C”. A lógica trabalhando do programa é mesma que o programa publicado no compartimento do computador de PCQUEST, na edição de fevereiro 2003.
Neste programa, nós tentamos fazer este tipo dos discos flexíveis reusável formatando os. Os sons do programa que você pode segurar o disco flexível mesmo com alguns setores maus nele. Entretanto, se o primeiro setor do disco for mau, o disco flexível não pode ser formatado.
O programa reescreve todo o DBR, FAT e informação do diretório de raiz. Se houver uns setores maus na superfície do disco, estão marcados como o bad no FAT.
No coding do programa, a estrutura BPB é usada ao escritor o bloco do parâmetro do BIOS do DBR. O boot_sector da estrutura é usado escrever o DBR do disco. O address_field da estrutura é usado interagindo com o número do cilindro, das cabeças, e dos setores por a trilha e com o tamanho do setor.
As funções diferentes usadas no coding do programa e de sua descrição foram dadas na tabela dada em seguida.
Função |
Descrição |
Random_VolumeID () |
Esta função fornece o volume ID do disco. (Como o DOS gera o número de série do disco flexível foi discutido ao lado desta tabela) |
mark_bad () |
Marcar o setor mau usando a função 04H de 13H INTERNO verificar os setores. |
sector_no_to_physical () |
Esta função é usada converter o número dos setores em trilhas, em cabeças e em setores |
format_term () |
Para terminar o formato e para retirar o programa |
write_boot_info () |
Escreve o setor do carregador do disco |
set_media_type_for_format () |
A função é usada ajustar o tipo de meios para o formato usando a função 18H de 13H INTERNO |
volume_label () |
A função começa a etiqueta de volume escrever a etiqueta de volume do disco |
formato () |
Limpa a superfície do disco durante o formato as well as a manipulação da contagem de setores má. |
get_drive_parameters () |
A função usa 13H INTERNO, função 08H começar parâmetros da movimentação. |
mark_bad () |
Prende a informação do conjunto mau para marcar no FAT |
ask_for_continue () |
Função a confirmar antes de formatar o disco |
check_bad () |
Funcionar para verificar se o status retornado for código de erro para o setor MAU |
erro () |
Esta função indica a mensagem de erro para o código de erro correspondente |
lock_volume () |
A função é usada travar a movimentação usando 21H INTERNO, função 44H e a função secundária 0DH |
unlock_volume () |
A função é usada destravar a movimentação usando 21H INTERNO, função 44H e a função secundária 0DH |
physical_to_sector_no () |
A função é usada calcular o número dos setores do número da trilha, da cabeça e do setor |
O número de série do volume do disco flexível é calculado pelo DOS de acordo com a data atual e a hora do pulso de disparo do sistema.
A primeira parte do número de série é calculada pela soma da hora (segundos e centésimo de um segundo) e da data (mês e dia). A segunda parte do número de série é igual à soma da hora (horas e minutos) e da data (ano).
Todos os cálculos são executados no sistema hexadecimal. Por exemplo, deixar-nos supõem que você formatou o disco flexível no ambiente do DOS em 11:16: 28: 65 em 10/23/2003. Deixar-nos agora calculam o número de série do disco.
O tempo (segundos e centésimo dos segundos) no formato é
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
Similarmente, a data (mês e dia) no formato é
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
Similarmente, o tempo (horas e minutos) no formato é,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
E o ano será
= 2003
= 07D3
Agora, deixar-nos calculam o número de série do disco flexível, de acordo com a descrição dada antes. A primeira parte do poço do número de série seja (1C41 + 0A17) = 2658 e a segunda parte do número de série será (0B10 + 07D3) = 12E3.
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|