Спасибо. Но думал, что можно будет какой-нибудь утилитой типа cpmtools.
Спасибо. Но думал, что можно будет какой-нибудь утилитой типа cpmtools.
новостная лента Enterprise HeartBit | Cubietruck
я думаю сделать питон скрипт для сборки/разборки образов, но пока доделываю эмулятор
SlashNet(22.11.2025)
Проще всего использовать 32-разрядный TotalCommander, в котором установлен DSK-плагин.
SlashNet(22.11.2025)
Хочу понять логику работы клавиатуры терминала 15ИЭ-00-013. Не нашёл этого в документации.
Клавиши РУС и ЛАТ должны просто отправлять специальные коды для переключения раскладки, и ОС/программа это сама обрабатывает? Или же сама клавиатура должна менять таблицу символов и дальше уже выдавать какой-то маркер set0/set1?
Клавиши ВР и НР (верхний и нижний регистр). Это режим внутри клавиатуры (как Shift), или же они только посылают код, а терминал уже сам переключает режим набора?
Клавиши: ЗБ, АР1, С1, АР2, ПРД, ПРМ, ПРС, РЕД, СДВ, ОЧС — возможно, они связаны с режимами редактирования текста, но точных соответствий я не нашёл.
Вот инструкция к терминалу и инструкция к эмулятору, которые я использую:
https://forum.maxiol.com/index.php?a...e=post&id=7945
https://d3-28.ru/wp-content/uploads/...11-11-2018.pdf
Код:[ ["СБР", "СТР", "СТС", "", "", "АР1", "С1", "АР2", "", "", "", "ПРД", "ПРМ", "ПРС", "", "РЕД", "СДВ", "ОЧС"], ["; +", "1 !", "2 “", "3 #", "4 ¤", "5 %", "6 &", "7 `", "8 (", "9 )", "0", "- =", "ТАБ", "ГТ", "", "", "", "" ], ["Й J", "Ц C", "У U", "К K", "Е E", "Н N", "Г G", "Ш [", "Щ ]", "З Z", "Х H", ": *", "ПС", "ВК", "", "⬐", "↑", "↩"], ["СУ", "Ф F", "Ы Y", "В W", "А A", "П P", "Р R", "О O", "Л L", "Д D", "Ж V", "Э \\", ".>", "ЗБ", "", "←", "↖", "→"], ["ВР", "Я Q", "Ч ¬", "С S", "М M", "И I", "Т T", "Ь X", "Б B", "Ю @", ", <", "/ ?", "_", "НР", "", "⟻", "↓", "⟼"], ["РУС", "", "", "", "", "", "space", "", "", "", "", "", "", "ЛАТ", "", "⭽", "⤓", "⭻"], ]
Да, клавиша <РУС> при каждом нажатии отправляет код <Ctrl/N> ( 016 = 14. = x0E ), а клавиша <ЛАТ> при каждом нажатии отправляет код <Ctrl/O> ( 017 = 15. = x0F ).
Это режим внутри клавиатуры (как Shift).
ПРД, ПРМ, ПРС, РЕД, СДВ, ОЧС - управляют работой устройства.
<ЗБ> = 0177 = 127. = x7F
<АР1> = <Ctrl/P> = 020 = 16. = x10
<С1> = <Ctrl/A> = 01 = 1. = x01
<АР2> = <Ctrl/[> = 033 = 27. = x1B
<ТАБ> = <Ctrl/X> = 030 = 24. = x18
<ГТ> = <Ctrl/I> = 011 = 9. = x09
<ПС> = <Ctrl/J> = 012 = 10. = x0A
<ВК> = <Ctrl/M> = 015 = 13. = x0D
Последний раз редактировалось Patron; 23.11.2025 в 17:38.
kibertorm(24.11.2025)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
спасибо!, добавил в эмулятор
а можете еще по поведению эмулятора подсказать?
некоторые программы присылают много b'00' один за одним, зачем это делается?
https://forum.maxiol.com/index.php?a...e=post&id=7945
Зачем нужны команды Аннулирование, Замена?
Может ли быть так, что PDP11 забывает посылать команды переключения система команд1 / система команд2 ?
вот так согласно таблице нужно орабатывать байты
фактически - пришлось сделать такКод:{'code': b'1A', 'cs1': 'КЛВ', 'cs2': 'ЗАМЕНА', 'cs_desc': 'курсор на шаг влево / (ЗАМЕНА)'}, {'code': b'1B', 'cs1': '', 'cs2': 'АР2', 'cs_desc': 'управляющая метка АР2'}, {'code': b'1C', 'cs1': 'КВВ', 'cs2': '', 'cs_desc': 'курсор вверх на одну строку'}, {'code': b'17', 'cs1': 'СИС2', 'cs2': '', 'cs_desc': 'переключение на систему команд 2'}, {'code': b'1B45', 'cs2': 'АР2 E', 'cs_desc': 'переключение на систему команд 1'},
АР2 E - по какой-то причине не приходит никогдаКод:{'code': b'1A', 'cs1': 'КЛВ', 'cs2': 'КЛВ', 'cs_desc': 'курсор на шаг влево/ (ЗАМЕНА)'}, {'code': b'1B', 'cs1': 'АР2', 'cs2': 'АР2', 'cs_desc': 'управляющая метка АР2'}, {'code': b'1C', 'cs1': 'КВВ', 'cs2': 'КВВ', 'cs_desc': 'курсор вверх на одну строку'},
Последний раз редактировалось kibertorm; 24.11.2025 в 09:16.
Чтобы максимально просто осуществить задержку выполнения программы, не зависящую от быстродействия процессора.
Эти команды ни зачем особо не нужны и нигде по сути не используются.
Типа, программа отправляет в эмулируемый регистр последовательного порта PDP11 байт, но до эмулятора терминала этот байт не доходит? Такого быть не должно.
Из одной части программы эмулятора в другую или из эмулятора PDP11 через эмулятор COM-порта в эмулятор терминала?
kibertorm(24.11.2025)
Это называется символ-заполнитель (обычно 0). Некоторым (особенно старым) терминал он требуется, когда выполняется долгая команда (типа перевода строки, стирание экрана) - он игнорируется терминалом, но позволяет создать некую задержку, пока команда гарантированно не отработает. Обычно - для каких команд и в каком количестве требуется - есть в доках.
kibertorm(24.11.2025)
команду АР2 E - simh pdp11 не передает в линукс (хост ОС), а другие АР2 команды - передает (если запускать игру xonix)
из за этого код эмуляции 15ИЭ-00-013 изредка путается и использует не правильную систему команд (2 вместо 1)
упрощенно коммуникация выглядит так
каким образом можно проверить пытается ли xonix передать "АР2 E" - не знаю. может можно написать небольшой скрипт который запустится на simh pdp11 и будет передавать команды, а я буду их ловить?Код:import pty import os import subprocess import time master_fd, slave_fd = pty.openpty() proc = subprocess.Popen( [ "simh_pdp11.so", "pdp11.ini"], stdin=slave_fd, stdout=slave_fd, stderr=slave_fd ) time.sleep(1) os.write(master_fd, b"dir") # тут клавиатура time.sleep(1) data = os.read(master_fd, 4096) print(data.decode(errors="ignore")) # тут буфер экрана и дешифровка
(сеть не использую из за ограничений питон дистрибутива железки на которой все это будет запускаться)
Последний раз редактировалось kibertorm; 24.11.2025 в 15:58.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)