====== MSX — НМЛ (Накопитель на магнитной ленте) ======
Это описание интерфейса магнитофона (НМЛ) на MSX.
Команды для работы с НМЛ из [[msx:basic:|]] описаны [[msx:basic_dialogue_programming_language:009#n95|здесь]].
Скорость передачи данных
* 1200 бод(бит/с) — используется по умолчанию
* 2400 бод(бит/с)
Скорость работы по умолчанию может быть переопределена в операторе ''SCREEN'', подробнее [[msx:basic_dialogue_programming_language:005#n7|здесь]].
{{anchor:fsk_encoding}}
Для кодирования сигнала используется частотная модуляция.
Описание алгоритма:
^ Скорость \\ (бод) ^ Значение ^ Частота \\ (Гц) ^ Число периодов ^ Форма сигнала ^
| 1200 | 0 | 1200 | 1 |
| | |
| ┌───────────┐
| │ │
|───────────┘ └
|
|:::| 1 | 2400 | 2 |
| | | |
| ┌─────┐ ┌─────┐
| │ │ │ │
|─────┘ └─────┘ └
|
| 2400 | 0 | 2400 | 1 |
| | | |
| ┌─────┐ |
| │ │ |
|─────┘ └ |
|
|:::| 1 | 4800 | 2 |
| | | | |
| ┌──┐ ┌──┐ |
| │ │ │ │ |
|──┘ └──┘ └ |
|
| ||||
| | | | |
◄───────────────────────►──────────
| | | | 2983 T
| | | | (833 мс)
◄───────────►──────────
| | | 1491 T (417 мс)
◄─────►───────────
| | 746 T (208 мс)
◄──►────────
| | 373 T (104 мс)
|
===== Кодирование одного байта =====
Один байт данных кодируется последовательностью битов, то есть одиннадцатью битами:
LSB MSB
0 1 2 3 4 5 6 7
─┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─
│ 0 │ X │ X │ X │ X │ X │ X │ X │ X │ 1 │ 1 │
─┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─
└─┬─┘└───────────────┬─────────────┘└───┬───┘
Стартовый Данные Конечные
бит биты
===== Кодирование заголовка =====
Заголовок (header) — это группа сигналов специальной частоты, записанных на ленте, которая используется для стабилизации ленты и определения скорости передачи информации после начала движения ленты или для разделения двух файлов. В первом случае используется "длинный" заголовок, во втором - "короткий".
^ Скорость \\ (бод) ^ Заголовок ^ Представление заголовка ^
| 1200 | Длинный |2400 Гц × 16000 (≈6.7 с)|
|:::| Короткий |2400 Гц × 4000 (≈1.7 с)|
| 2400 | Длинный |4800 Гц × 32000 (≈6.7 с)|
|:::| Короткий |4800 Гц × 8000 (≈1.7 с)|
====== Форматы файлов ======
===== Файлы текстов в коде ASCII =====
В этом формате программы на языке [[msx:basic:|]] записываются командой ''[[msx:basic_dialogue_programming_language:009#save2|SAVE]]''. Кроме этого, в коде ASCII записываются файлы, созданные при помощи команды ''[[msx:basic_dialogue_programming_language:009#open|OPEN]]''.
Формат текстового файла в коде ASCII:
^ Назначение ^^ Длина/ \\ длительность ^
^Заголовок \\ файла|Длинный заголовок|6.7 с|
|:::|EAh × 10|10 байт|
|:::|Имя файла|6 байт|
^Тело \\ файла|Короткий заголовок|1.7 с|
|:::|Блок 1|256 байт|
|:::| … ||
|:::|Блок n|256 байт|
Тело файла в этом формате состоит из произвольного количества блоков по 256 байт, перед каждым из которых имеется короткий заголовок. В последний блок должен быть включен код CTRL+Z — EOF (конец файла).
===== Двоичный BASIC–формат =====
Программы на языке [[msx:basic:|]] записываются в этом двоичном формате командой ''[[msx:basic_dialogue_programming_language:009#csave|CSAVE]]'', а считываются командой ''[[msx:basic_dialogue_programming_language:009#cload|CLOAD]]''
^ Назначение ^^ Длина/ \\ длительность ^
^Заголовок \\ файла|Длинный заголовок|6.7 с|
|:::|D3h × 10|10 байт|
|:::|Имя файла|6 байт|
^Тело \\ файла|Короткий заголовок|1.7 с|
|:::|Программа на MSX-BASIC||
|:::|00h×7|7 байт|
===== Двоичный BASIC–формат =====
Машинные коды записываются на ленту командой ''[[msx:basic_dialogue_programming_language:009#bsave|BSAVE]]''. В теле файла записываются начальный, конечный и стартовый адреса программы в кодах. Поэтому длина файла может быть вычислена автоматически и специальная отметка конца файла на ленте не хранится. Такие файлы можно считать командой ''[[msx:basic_dialogue_programming_language:009#bload|BLOAD]]''
Формат:
^ Назначение ^^ Длина/ \\ длительность ^
^Заголовок \\ файла|Длинный заголовок|6.7 с|
|:::|D0h × 10|10 байт|
|:::|Имя файла|6 байт|
^Тело \\ файла|Короткий заголовок|1.7 с|
|:::|Начальный адрес|2 байта|
|:::|Конечный адрес|2 байта|
|:::|Стартовый адрес|2 байта|
|:::|Программа на MSX-BASIC||
{{anchor:din}}
====== Разъём DIN ======
На компьютере установлено гнездо [[din_connector:din_connector#din45326a|DIN 45326 тип A]]:
\\ {{:din_connector:din-45326a.svg|}}
^ № ^ Сигнал ^ Описание ^
| 1 |GND|Сигнальная земля|
| 2 |GND|:::|
| 3 |GND|:::|
| 4 |CMT OUT|[[#cmtout|Выход]]|
| 5 |CMT IN|[[#cmtin|Вход]]|
| 6 |REM+|[[#rem|Управление мотором]]|
| 7 |REM-|:::|
| 8 |GND|Сигнальная земля|
{{anchor:jack2}}
====== Разъёмы Jack ======
Нумерация контактов разъёма Jack начинается со стороны соединения с кабелем, используются вилки на 2 контакта:
╭────────────╮
│ ├─────┬┬─╮
│ ├─────┴┴─╯
╰────────────╯ 1 2
{{anchor:cmtout}}
===== Выход =====
Разъём Jack, диаметр 3,5 мм:
|< 20% 30% 20% >|
^ DIN ^ Сигнал ^ Jack ^
| 1 |GND| 1 |
| 4 |CMT OUT| 2 |
Подключается к разъёму для микрофона.
Уровень выходного сигнала: -45дБм±5дБм (0дБм = 0.755В).
{{anchor:cmtin}}
===== Вход =====
Разъём Jack, диаметр 3,5 мм:
|< 20% 30% 20% >|
^ DIN ^ Сигнал ^ Jack ^
| 1 |GND| 1 |
| 5 |CMT IN| 2 |
Подключается к разъёму для наушников.
Уровень входного сигнала при частоте 1200Гц в пике 7мВ~22мВ.
{{anchor:rem}}
===== Управление мотором =====
Разъём Jack, диаметр 2,5 мм:
|< 20% 30% 20% >|
^ DIN ^ Сигнал ^ Jack ^
| 7 |REM-| 1 |
| 6 |REM+| 2 |
Управление осуществляется через реле по команде ''[[msx:basic_dialogue_programming_language:009#motor|MOTOR]]'' через [[msx:ppi|PPI]]
/*
{{:msx:data_recorder-cable.jpg|}} \\ [[https://www.msx.org/wiki/images/thumb/4/43/MSXDataRecorderCable.jpg/700px-MSXDataRecorderCable.jpg|оригинал]]
*/
====== Ссылки ======
* **[[msx:datapack:datapack|]]**
* {{:msx:datapack:msx_datapack_vol-1_charter-1.pdf|MSX Datapack Том 1, раздел 1}} (3.1 Интерфейс магнитофона)
* [[msxorg>wiki/Data_Recorder_connector|Data Recorder connector]]
* [[https://www.msx.org/search/apachesolr_search/Data Recorder?filters=type%3Awiki|Search results: Data Recorder]]
* https://github.com/Wierzbowsky/Caslink/blob/master/Docs/readme.txt
* [[https://slideplayer.com/slide/2503834/|Презентация CasLink2]]
* [[http://ngs.no.coocan.jp/doc/wiki.cgi/datapack?page=3%BE%CF+%A5%A4%A5%F3%A5%BF%A1%BC%A5%D5%A5%A7%A5%A4%A5%B9|3.1 カセットインターフェイス]]
* [[https://github.com/oboroc/msx-books/blob/master/msx2-fb-1993-ru.md#10|К.И.Фахрутдинов, И.И.Бочаров, Издательство Дальневосточного Университета, 1993 — Архитектура и устройства микрокомпьютеров стандарта MSX 2 : 10. Интерфейс с кассетным магнитофоном]]
{{tag>MSX Hardware}}