Cualquier sistema de archivos o sistema operativo del que quieras hablar está bien para mí. ¡Agradable!
En un ZX Spectrum, la inicialización de un LOAD
comando pondrá el sistema en un ciclo cerrado, leyendo la línea de entrada de audio.
El inicio de los datos se indica mediante un tono constante, y luego sigue una secuencia de pulsos largos / cortos, donde un pulso corto es para un binario 0
y uno más largo para un binario 1
( https://en.wikipedia.org/ wiki / ZX_Spectrum_software ). El bucle de carga ajustada reúne bits hasta que llena un byte (8 bits), lo almacena en la memoria, aumenta el puntero de la memoria y luego vuelve a recorrer para buscar más bits.
Por lo general, lo primero que leería un cargador es un encabezado de formato corto y fijo , que indique al menos el número de bytes que se esperan, y posiblemente información adicional como el nombre del archivo, el tipo de archivo y la dirección de carga. Después de leer este breve encabezado, el programa podría decidir si continúa cargando la mayor parte de los datos o si sale de la rutina de carga y muestra un mensaje apropiado para el usuario.
Se podría reconocer un estado de fin de archivo al recibir tantos bytes como se esperaba (ya sea un número fijo de bytes, cableado en el software o un número variable como se indica en un encabezado). Se produjo un error si el bucle de carga no recibió un pulso en el rango de frecuencia esperado durante un cierto período de tiempo.
Un poco de historia sobre esta respuesta
El procedimiento descrito carga datos de una cinta de audio normal, de ahí la necesidad de escanear la entrada de audio (se conecta con un enchufe estándar a las grabadoras de cinta). Un LOAD
comando es técnicamente lo mismo que open
un archivo, pero está físicamente vinculado a la carga real del archivo. Esto se debe a que la computadora no controla la grabadora y no puede (con éxito) abrir un archivo pero no cargarlo.
El "lazo cerrado" se menciona porque (1) la CPU, un Z80-A (si la memoria sirve), era realmente lenta: 3.5 MHz, y (2) ¡el Spectrum no tenía reloj interno! Eso significa que tenía que mantener con precisión el recuento de los estados T (tiempos de instrucción) para cada uno. soltero. instrucción. dentro de ese bucle, solo para mantener la sincronización precisa del pitido.
Afortunadamente, esa baja velocidad de la CPU tenía la clara ventaja de que podía calcular el número de ciclos en una hoja de papel y, por lo tanto, el tiempo real que tomarían.
C
Linux; ya que lo que hacen Linux y Windows es diferente. De lo contrario, es un poco demasiado amplio. Además, cualquier lenguaje de nivel superior terminará llamando a una API de C para el sistema o compilando a C para ejecutar, por lo que salir al nivel de "C" es colocarlo en el mínimo común denominador.