Qualquer sistema de arquivos ou sistema operacional sobre o qual você queira falar está bem para mim. Agradável!
Em um ZX Spectrum, a inicialização de um LOAD
comando colocará o sistema em um loop restrito, lendo a linha Audio In.
O início dos dados é indicado por um tom constante e, em seguida, segue uma sequência de pulsos longos / curtos, onde um pulso curto é para um binário 0
e um pulso mais longo para um binário 1
( https://en.wikipedia.org/ wiki / ZX_Spectrum_software ). O loop de carga apertada reúne bits até preencher um byte (8 bits), armazena isso na memória, aumenta o ponteiro da memória e volta para procurar mais bits.
Normalmente, a primeira coisa que um carregador lê é um cabeçalho de formato curto e fixo , indicando pelo menos o número de bytes a serem esperados e possivelmente informações adicionais, como nome do arquivo, tipo de arquivo e endereço de carregamento. Depois de ler esse cabeçalho curto, o programa pode decidir se continua carregando a maior parte dos dados ou sai da rotina de carregamento e exibe uma mensagem apropriada para o usuário.
Um estado de fim de arquivo pode ser reconhecido ao receber o número de bytes esperado (um número fixo de bytes, conectado no software ou um número variável, como indicado em um cabeçalho). Foi gerado um erro se o loop de carregamento não receber um pulso na faixa de frequência esperada por um determinado período de tempo.
Um pouco de fundo sobre esta resposta
O procedimento descrito carrega dados de uma fita de áudio comum - daí a necessidade de digitalizar a entrada de áudio (conectada com um plugue padrão para gravadores). Um LOAD
comando é tecnicamente o mesmo que open
um arquivo - mas está fisicamente ligada a realmente carregar o arquivo. Isso ocorre porque o gravador não é controlado pelo computador e você não pode (com êxito) abrir um arquivo, mas não carregá-lo.
O "loop apertado" é mencionado porque (1) a CPU, uma Z80-A (se a memória servir), era realmente lenta: 3,5 MHz e (2) o Spectrum não tinha relógio interno! Isso significa que ele precisou manter a contagem precisa dos estados T (tempos de instrução) para todos. solteiro. instrução. dentro desse loop, apenas para manter o tempo exato do sinal sonoro.
Felizmente, essa baixa velocidade da CPU tinha a vantagem distinta de poder calcular o número de ciclos em um pedaço de papel e, portanto, o tempo real que eles levariam.
C
Linux; já que o que Linux e Windows fazem é diferente. Caso contrário, é um pouco amplo demais. Além disso, qualquer linguagem de nível superior acabará chamando uma API C para o sistema ou compilando até C para executar, portanto, sair no nível de "C" é colocá-lo no mínimo denominador comum.