====== 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}}