Будь-яка файлова система чи операційна система, про яку ви хочете поговорити, мені добре. Приємно!
На ZX Spectrum ініціалізація LOAD
команди покладе систему в щільний цикл, читаючи рядок Audio In.
Початкові дані позначаються постійним тоном, після чого слідує послідовність довгих / коротких імпульсів, де короткий імпульс для двійкового 0
і довший для двійкового 1
( https://uk.wikipedia.org/ wiki / ZX_Spectrum_software ). Тугий цикл завантаження збирає біти, поки він не заповнить байт (8 біт), зберігає це в пам'яті, збільшує покажчик пам'яті, а потім петлю повертає назад, щоб перевірити наявність бітів.
Як правило, перше, що прочитає завантажувач, - це короткий заголовок фіксованого формату , який вказує принаймні кількість байтів, які очікують, і, можливо, додаткову інформацію, таку як ім'я файлу, тип файлу та адресу завантаження. Прочитавши цей короткий заголовок, програма могла вирішити, чи продовжувати завантажувати основну масу даних, або вийти з режиму завантаження та відобразити відповідне повідомлення для користувача.
Стан кінцевого файлу можна розпізнати, отримавши стільки байтів, скільки очікувалося (або фіксовану кількість байтів, вбудовану в програмне забезпечення, або змінне число, наприклад, вказане в заголовку). Помилка була допущена, якщо цикл завантаження не отримав імпульс у очікуваному діапазоні частот протягом певного часу.
Трохи про цю відповідь
Описана процедура завантажує дані із звичайної аудіокасети - звідси необхідність сканувати Audio In (вона пов'язана зі стандартним штекером до магнітофонів). LOAD
Команда технічно ж , як і open
файл - але він фізично прив'язаний до фактично завантаженні файлу. Це відбувається тому, що магнітофон не контролюється комп'ютером, і ви не можете (успішно) відкрити файл, але не завантажити його.
Про "тугий цикл" згадується тому, що (1) процесор, Z80-A (якщо служить пам'ять), був справді повільним: 3,5 МГц, і (2) Спектр не мав внутрішнього годинника! Це означає, що він повинен був точно вести підрахунок T-станів (час інструкцій) для кожного. неодружений інструкція. всередині цього циклу, просто для підтримки точного часу звукового сигналу.
На щастя, ця низька швидкість процесора мала виразну перевагу, що ви могли обчислити кількість циклів на аркуші паперу, а отже, і реальний світовий час, який вони забирають.
C
Linux та Linux; оскільки те, що роблять Linux та Windows, відрізняється. Інакше це трохи занадто широко. Крім того, будь-яка мова вищого рівня в кінцевому підсумку вимагатиме або API API для системи, або компіляція до C для виконання, тому залишення на рівні "C" ставить його на найменший загальний знаменник.