Jedes Dateisystem oder Betriebssystem, über das Sie sprechen möchten, ist für mich in Ordnung. Nett!
Bei einem ZX-Spektrum wird durch Initialisieren eines LOAD
Befehls das System in eine enge Schleife geraten und die Audio-In-Zeile gelesen.
Der Beginn der Daten wird durch einen konstanten Ton angezeigt. Danach folgt eine Folge von langen / kurzen Impulsen, wobei ein kurzer Impuls für eine Binärdatei 0
und ein längerer für eine Binärdatei gilt 1
( https://en.wikipedia.org/). wiki / ZX_Spectrum_software ). Die enge Ladeschleife sammelt Bits, bis sie ein Byte (8 Bits) füllt, dieses im Speicher speichert, den Speicherzeiger erhöht und dann zurückschleift, um nach weiteren Bits zu suchen.
In der Regel liest ein Loader als erstes einen kurzen Header mit festem Format , der mindestens die zu erwartende Anzahl von Bytes und möglicherweise zusätzliche Informationen wie Dateiname, Dateityp und Ladeadresse angibt. Nach dem Lesen dieses kurzen Headers kann das Programm entscheiden, ob der Hauptteil der Daten weiter geladen oder die Laderoutine beendet und eine entsprechende Meldung für den Benutzer angezeigt werden soll.
Ein Dateiende-Status kann erkannt werden, indem so viele Bytes wie erwartet empfangen werden (entweder eine feste Anzahl von Bytes, die in der Software fest verdrahtet sind, oder eine variable Anzahl, wie in einem Header angegeben). Ein Fehler wurde ausgelöst, wenn die Ladeschleife für eine bestimmte Zeit keinen Impuls im erwarteten Frequenzbereich empfangen hat.
Ein kleiner Hintergrund zu dieser Antwort
Das beschriebene Verfahren lädt Daten von einem normalen Audioband - daher muss Audio In gescannt werden (es ist mit einem Standardstecker an Tonbandgeräte angeschlossen). Ein LOAD
Befehl ist technisch identisch mit open
einer Datei, ist jedoch physisch an das tatsächliche Laden der Datei gebunden . Dies liegt daran, dass der Kassettenrekorder nicht vom Computer gesteuert wird und Sie eine Datei nicht (erfolgreich) öffnen, aber nicht laden können.
Die "enge Schleife" wird erwähnt, weil (1) die CPU, ein Z80-A (wenn Speicher dient), sehr langsam war: 3,5 MHz, und (2) das Spektrum keinen internen Takt hatte! Das bedeutet, dass die T-Zustände (Befehlszeiten) für jeden genau gezählt werden mussten. Single. Anweisung. innerhalb dieser Schleife, nur um das genaue Signalton-Timing aufrechtzuerhalten.
Glücklicherweise hatte diese niedrige CPU-Geschwindigkeit den entscheidenden Vorteil, dass Sie die Anzahl der Zyklen auf einem Blatt Papier und damit die reale Zeit berechnen konnten, die sie benötigen würden.
C
Linux zu konzentrieren; da unterscheidet sich was Linux und Windows machen. Ansonsten ist es etwas zu breit. Außerdem ruft jede übergeordnete Sprache entweder eine C-API für das System auf oder kompiliert sie zur Ausführung auf C herunter. Wenn Sie also auf der Ebene "C" bleiben, wird sie auf den kleinsten gemeinsamen Nenner gesetzt.