Qualsiasi file system o sistema operativo di cui vuoi parlare va bene per me. Bello!
Su uno spettro ZX, inizializzazione a LOAD
comando metterà il sistema in un circuito stretto, leggendo la linea Audio In.
L'inizio dei dati è indicato da un tono costante e successivamente segue una sequenza di impulsi lunghi / brevi, in cui un impulso breve è per un binario 0
e uno più lungo per un binario 1
( https://en.wikipedia.org/ wiki / ZX_Spectrum_software ). Il circuito di caricamento stretto raccoglie i bit fino a quando non riempie un byte (8 bit), lo memorizza in memoria, aumenta il puntatore di memoria, quindi torna indietro per cercare altri bit.
In genere, la prima cosa che un caricatore potrebbe leggere è un'intestazione di formato fissa, breve, che indica almeno il numero di byte previsti e, eventualmente, ulteriori informazioni come il nome del file, il tipo di file e l'indirizzo di caricamento. Dopo aver letto questa breve intestazione, il programma potrebbe decidere se continuare a caricare la maggior parte dei dati o uscire dalla routine di caricamento e visualizzare un messaggio appropriato per l'utente.
Uno stato di fine file può essere riconosciuto ricevendo tutti i byte previsti (o un numero fisso di byte, cablato nel software o un numero variabile come indicato in un'intestazione). Si è verificato un errore se il loop di caricamento non ha ricevuto un impulso nella gamma di frequenza prevista per un certo periodo di tempo.
Un piccolo retroscena su questa risposta
La procedura descritta carica i dati da un normale nastro audio - da qui la necessità di scansionare Audio In (collegato con una spina standard ai registratori a nastro). Un LOAD
comando è tecnicamente uguale a open
un file, ma è fisicamente legato al caricamento effettivo del file. Questo perché il registratore non è controllato dal computer e non è possibile (correttamente) aprire un file ma non caricarlo.
Lo "stretto circuito" è menzionato perché (1) la CPU, uno Z80-A (se la memoria serve), era davvero lenta: 3,5 MHz e (2) lo spettro non aveva un clock interno! Ciò significa che doveva tenere accuratamente il conto degli stati T (tempi di istruzione) per ciascuno. singolo. istruzioni. all'interno di quel loop, solo per mantenere la precisione del segnale acustico.
Fortunatamente, quella bassa velocità della CPU aveva il netto vantaggio di poter calcolare il numero di cicli su un pezzo di carta e quindi il tempo reale che avrebbero impiegato.
C
e Linux; poiché ciò che fanno Linux e Windows differisce. Altrimenti, è un po 'troppo ampio. Inoltre, qualsiasi linguaggio di livello superiore finirà per chiamare un'API C per il sistema o la compilazione in C per l'esecuzione, quindi lasciare al livello di "C" lo sta mettendo al minimo comune denominatore.