Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Старый софт » Программы под RT-11 |
<<Назад Вперед>> | Страницы: 1 2 3 4 | Печать |
xoiss |
Сообщение отправлено: 25 октября 2018 2:07 Сообщение отредактировано: 8 ноября 2018 15:20
В этой теме Также приветствуются программы для других компьютеров (например, IBM PC совместимых), но только если они предназначены или как-то могут быть с пользой применены для работы с RT-11. Например, эмуляторы RT-11 или ДВК, коммуникационные программы, редакторы образов дисков RT-11 и т.п. Очень приветствуются размещаемые здесь комментарии-статьи с описанием, как этими программами пользоваться. (и, пока я наделён правами модератора "Призраков", обещаю, будут поощряться) Отмечу, что в Интернетах, конечно же, предостаточно и тем, и целых сайтов, где публикуются архивы программ, образы каких-то дисков, сканы документации, в общем, Гига-, Тера- и Пета-байты чего-то... Но мало, крайне мало, хотя бы даже элементарных каталогов того, что же там внутри, не говоря уже о step-by-step / quick-start инструкциях. В итоге, увы, 90+% этого богатства лежит либо неподъёмным, либо и вовсе неопознанным и, как следствие, потерянным для нашего Занятия. Вот. Если Вы согласны с тем, что это неправильно, что так не должно быть, и если Вы можете это хоть как-то исправить — приходите! Вы нужны здесь! Опубликовано: - [new] обмен информацией с ОС RT-11 (на примере ДВК) через последовательный порт, используя протокол Kermit - компилятор Си для RT-11 ДВК + пошаговая инструкция + приложение - симулятор Б3-23 Разыскивается: ... присылайте мне запросы в личку — буду их впечатывать в этот прикреплённый пост, чтоб всегда видно было ... или оставляйте их в комментариях к Теме — тогда кто-нибудь (я или Модератор Раздела) перенесёт их сюда в список Прежде чем попросить что-то разыскать, попробуйте поискать "это" вот на этом сайте: http://pdp-11.ru Там реально очень много чего есть! Если поискали и убедились, что там "этого" нет, то тогда есть смысл написать запрос на поиск. Но желательно запрос сделать максимально конкретным. То есть не надо делать запросы вроде "ищу софт для RT-11". Примеры запросов: - ищу игры пакета "Роботландия" — это уже в достаточной мере конкретный запрос, хотя речь идёт и не о конкретной программе - ищу "Бейсик Вильнюс УК-НЦ" версия именно 1987 года (но не 1988 года) и именно для преподавательской машины (т.е. LOAD/SAVE направлены на дисковод, а не в сеть) |
Сейчас на форуме |
xoiss |
Сообщение отправлено: 25 октября 2018 2:51 Сообщение отредактировано: 25 октября 2018 11:29
Система программирования на языке "C" от НПК ДИАЛОГ. ... — образ диска в структурированном формате dsk — создан программой SAMdisk, годится для нарезки дискеток ... — простой линейный образ диска — годится для эмулятора RT-11 ... — директория с файлами, извлечёнными из образа диска — содержимое можно смотреть/читать непосредственно с персоналки [upd] по просьбе Модератора ссылки временно убрал. Страждущим предлагаю писать мне на e-mail Система поставлялась на одной дискете ёмкостью 800 кб. Мне она досталась, в общем, случайно — переписал у школьного приятеля где-то в начале 90-х. Так вот и лежала 25 лет, пока пару месяцев назад мы её не сдампили с ребятами из Яндекс-музея. http://www.phantom.sannata.ru/...0#pp459960 Моя копия содержит все файлы, заявленные в описи диска, и не содержит привнесённого мусора. В общем, выглядит как точная копия оригинального дистрибутива. На диске содержится файл README.1ST, в котором: - заявлен "распространитель" данной Системы — 103460, г. Москва, научно-производственный кооператив "ДИАЛОГ", тел. 536-83-83 - а также содержится его (почти дословно) просьба не тиражировать данную Систему "подпольно" Мои не очень настойчивые попытки найти эту организацию и как-то связаться с ними не увенчались успехом. Индекса такого больше нет, но, вроде бы, он ранее принадлежал отделению Почты РФ № 460 в г. Зеленоград (Москва). Телефон, похоже, как-то сменился, т.к. попытка набрать этот номер с кодом города 495 или 499 переводит на авто-ответ "неправильно набран номер". Да и самой такой организации поисковики Яндекс и Гугл в Москве не обнаруживают (если не считать одноимённой компании в г. Пермь, закрывшейся в 2001 году). В общем, с условного разрешения Администрации Сайта (http://www.phantom.sannata.ru/forum/index.php?t=31089&p=474289#pp474289) публикую ссылки для скачивания. Если отыщется автор этой Системы или правообладатель — прошу поставить меня или Администрацию Сайта в известность, дабы стало возможным урегулировать правовые вопросы. // ... очень надеюсь, что среди посетителей этого Сайта не очень много прозорливых-юмористов-якобы-правообладателей, желающих получить антиплюс(ы) за нелепую попытку потроллить окружающих в отношении данного вопроса Чуть позже добавлю материалы, как это хозяйство запустить, и как им воспользоваться по прямому назначению. |
Сейчас на форуме |
svinka
Advanced Member
Сеньор Откуда: Совчина Всего сообщений: 1585 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 25 июня 2016 |
xoiss написал: Ни один из переводов слова fork не предполагает кражу. и её советских форков (ФОДОС, РАФОС) |
xoiss |
NEW! Сообщение отправлено: 25 октября 2018 18:14 Сообщение отредактировано: 21 ноября 2018 18:55
Компилятор Си для RT-11 — как запустить. Нам потребуется: 1. Эмулятор RT-11 2. Скаченный raw-образ дискеты или архив с файлами 3. Немножко знаний по RT-11, языку Си и процессу компиляции в целом С этим мы сделаем: 4. Программа Hello, world! — ну а как же без неё то?! 5. Познакомимся с особенностями диалекта K&R 1. Эмулятор RT-11 Для первого запуска я рекомендую взять именно эмулятор, причём именно эмулятор RT-11, но не конкретного компьютера (ДВК или УК-НЦ) под управлением RT-11. Конечно, можно взять и настоящий компьютер, нарезать дискетку из dsk-образа и т.д. — но я здесь не буду рассматривать этот путь как сильно выходящий за рамки "программы минимум". Можно попробовать эмулятор не RT-11, а ДВК или УК-НЦ — но я сам этот путь не проверял, и потенциально Вы можете столкнуться с какими-то искусственными дополнительными ограничениями эмулируемого компьютера. Например, с нехваткой места на диске... В общем, если я Вас убедил, что нужно воспользоваться эмулятором RT-11 — то Вы можете взять его отсюда: http://zx-pk.ru/threads/24755-emulyator-rt-11.html Если у Вас не Windows, а Linux или macOS, или Solaris, или FreeBSD, или... — ну, поставьте себе какой-нибудь виртуальный бокс и смонтируйте в него Windows. Как вариант. Либо воспользуйтесь эмулятором SIMH — он есть под все платформы. Либо сами попробуйте поискать онлайновый симулятор RT-11... может, где есть такой (я не искал). Эмулятор RT-11 по указанной мною ссылке распакуйте, скажем, в директорию c:\rt11 В этом каталоге Вы найдёте исполняемый файл rt11.exe — попробуйте его запустить. Откроется консольное окно, и в нём будет приглашение от ОС RT-11 к вводу команды (символ "точка"). Команды системы, которые Вам наверняка понадобятся: - сочетание клавиш Ctrl+C — отменяет набранную команду или останавливает программу - exit — завершить работу (можно просто окно консоли закрыть) - help — справка по командам системы - dir — посмотреть каталог диска - type — вывести текстовый файл на экран - show — показать смонтированные диски и назначение логических дисков - mount — смонтировать "физический" диск - assign — назначить "логический" диск - run — запустить программу - del — удалить файл // на самом деле команд очень много, и у них есть масса опций — так что наличие справочной документации к RT-11 совсем не помешает (см. далее п.3) Текстовые редакторы K52 или KED я здесь рассматривать не буду — это за пределами данной подТемы. У меня команда show показывает вот что: // здесь и далее "точку" перед командой печатать не нужно — она уже напечатана системой — т.е. это приглашение к вводу — печатаем только саму команду show .show То есть, в системе есть два "физических" диска hd0 и hd1, и им назначены логические имена sy и dk. У Вас, скорее всего, будет так же. В диск hd0 смонтирован образ загрузочного диска RT-11 с массой полезных программ. Из них нам понадобится линковщик LINK.SAV Обращаться к содержимому этого диска можно с указанием имени физического диска hd0: или назначенного ему логического имени sy: В диск hd1 смонтирован каталог хост-системы (windows), который является текущим (working directory) для запущенной программы (rt11.exe). Если Вы запустили rt11.exe двойным кликом мышки из директории c:\rt11, то в hd1 будет смонтирована директория c:\rt11 Посмотреть содержимое диска hd1 можно командой dir. Имя диска здесь указывать не обязательно, т.к. этому диску назначено логическое имя dk (что значит "диск по умолчанию"): Можно заметить, что среди файлов есть и сам эмулятор RT11.EXE — ну, вполне ожидаемо — для RT-11 это просто "какой-то файл". .dir И обратите внимание, как много свободных блоков на этом диске — аж 62722 (это 30 Мб!) — вот почему, в том числе, я рекомендую для начала именно эмулятор RT-11, а не конкретной ЭВМ, и уж тем более не всамделишную ДВК или УК-НЦ. Если Вы хотите, чтобы в диск hd1 был смонтирован другой каталог хост-системы (Windows), то нужно сделать следующее: - закройте сессию эмулятора, вернитесь в Windows - откройте сеанс MS-DOS — т.е. запустите cmd.exe - перейдите в нём в желаемый каталог, например, в c:\rt11\rt11cc - и запустите эмулятор с указанием пути к rt11.exe — например, так: ..\rt11.exe - теперь текущим каталогом для rt11.exe будет выбранная Вами директория — и она будет смонтирована в диск hd1 (он же - диск dk) Вот пример сеанса с запуском через cmd.exe: Теперь видно содержимое каталога c:\rt11\rt11cc, а не c:\rt11 Microsoft Windows [Version 10.0.14393] Я использую именно этот способ работы, т.к. он требует вводить чуть меньше команд в эмуляторе (не надо монтировать образ диска — он сам монтируется). Содержимое каталога rt11cc Вы можете взять из архива rt11cc.zip Но есть и другой путь — использовать образ оригинальной дискетки и монтировать его в ещё один диск в эмуляторе. Для этого поместите файл rt11cc.raw, например, в каталог c:\rt11 и запустите эмулятор. Посмотрите содержимое диска hd1 — Вы должны увидеть там файл rt11cc.raw Если такого файла нет — просто перезапустите эмулятор (запустите его именно из каталога c:\rt11), чтобы он заново считал содержимое каталога хост-системы. Важно: если Вы надумаете переименовать файл, то его имя должно иметь не более 6 символов, а расширение - не более 3 символов. Иначе RT-11 его не увидит! Смонтируйте образ в диск LD — и наслаждайтесь. Вот как выглядит сеанс в RT-11: У нас в системе теперь появился ещё один "физический" диск — LD — и в него смонтировано содержимое файла rt11cc.raw .dir Обратите внимание, что на этом диске очень мало свободного места. То есть компилировать свои великие проекты Вам придётся на другом диске. Теперь мы готовы что-нибудь покомпилировать. 2. Скаченный raw-образ дискеты или архив с файлами Всего есть три файла-zip-архива. Все они так или иначе в конечном итоге содержат абсолютно одинаковое содержимое. Различаются они лишь тем, как Вы будете их использовать. // в общем-то достаточно было бы опубликовать только один архив, но я немного позаботился о Вашем удобстве и сделал часть рутинной работы Файл rt11cc.dsk — это образ дискетки в специальном структурированном формате DSK. Важно: эмулятор RT-11 не воспринимает этот формат для команды mount. // точнее, он его воспримет, конечно, но не сможет найти в таком "диске" каталог файловой системы Этот файл предназначен для нарезания дискеток, если Вы захотите это сделать. Для нарезки дискеток можно (рекомендую) воспользоваться программой SAMdisk: https://simonowen.com/samdisk/ // собственно, этой же программой данный файл и был изначально создан из оригинальной дискетки. Файл rt11cc.raw — это простой линейный (посекторный) образ дискетки. Его размер равен в точности 800 кб. Этот файл можно смонтировать как диск в эмуляторе RT-11. // что касается других эмуляторов — не знаю, не проверял — но, скорее всего, подойдёт. Архив rt11cc.zip с каталогом rt11cc — это просто содержимое "как есть", вынутое из файла rt11cc.raw. Его можно поместить в рабочий каталог эмулятора (см. п.1 выше) и на этом же диске держать файлы своего маленького проектика. И, кроме того, этим каталогом удобно пользоваться для чтения документации к компилятору (там аж 9 книг!), а также изучения заголовочных (.H) и исходных (.MAC) файлов системных библиотек. Поверьте, читать эти файлы и искать что-то по ним гораздо проще и приятнее средствами хост-системы (Windows), нежели средствами RT-11. Если файлы почему-то как-то не так открываются в Вашем текстовом редакторе, то очень рекомендую Notepad++: https://notepad-plus-plus.org 3. Немножко знаний по RT-11, языку Си и процессу компиляции в целом Справка по командам RT-11 (на русском): http://www.emuverse.ru/downloa...foshlp.htm http://pdp-11.ru/mybk/doc/RTMON.TXT Очень толковое и детальное описание системы команд и всяких аспектов работы с дисками в RT-11 (на английском): http://ftpmirror.your.org/pub/..._Aug91.pdf http://www.bitsavers.org/pdf/d..._Aug91.pdf Справка по языку Си — ... ну, надеюсь, общие знания у Вас есть — если совсем нет, то начните вот с этого: статья про язык Си на Википедии Ну, могу ещё порекомендовать книжку: самая главная книжка по языку Си // где забесплатно скачать её перевод на русский — это Вы уже сами ищите Процесс компиляции в средние века выглядел примерно так: 1. Берём файл с исходным кодом (расширение .c) и запускаем препроцессор (программа CPP, как ни странно) — он, в частности, подтягивает все заголовочные файлы (.h) и на выходе производит монолитный файл чисто на Си — т.н. "единица трансляции" (расширение .i) 2. Берём единицу трансляции (.i) на языке Си и компилируем (программа CC) — на выходе получаем файл на ассемблере (.s) 3. Далее ассемблерный файл (.s) компилируем ассемблером (программа AS) — на выходе получаем т.н. "объектный файл" (расширение .o в UNIX или .obj если это RT-11) — это уже почти бинарь, но в котором пока не назначены адреса функций и переменных, нет библиотечных функций и ещё много чего 4. Повторяем пункты 1-4 для всех исходных файлов проекта, если их несколько — в итоге получаем соответствующее количество объектных файлов 5. Если какая-то часть проекта написана на других языках (Паскаль, Фортран или прямо на ассемблере, в т.ч. MACRO-11), то компилируем их и тоже получаем на выходе объектные файлы 6. И наконец, весь комплект объектных файлов (.obj), с добавлением библиотек передаём линковщику (программа LINK) — здесь мы хотим получить именно исполняемое приложение (файл с расширением .sav в RT-11) // я здесь не буду рассматривать случаи разработки системных библиотек или драйверов — только "обычные" пользовательские приложения // ... и ещё, прошу профессоров палеонтологии принять во внимание, что я пытаюсь доступным (упрощённым) языком рассказать довольно сложные и не совсем легко систематизируемые вещи — поэтому могут быть весьма сильные "обобщения" В случае же конкретно с Этой системой для RT-11 разработчики сделали следующее: - препроцессор интегрирован в компилятор и таким образом отдельной программы CPP в поставке нет — используется программа CC.SAV - ... соответственно нет такой вот выделенной ручной стадии, как запуск препроцессора — хотя всё же возможность получить отпостпроцессированный i-файл сохранена - ассемблер выполнен отдельной программой AS.SAV и его действительно можно запускать отдельно на входном s-файле (который можно получить компилятором) — но, таки, по умолчанию компилятор сам запускает ассемблер, чтобы максимально автоматизировать этот рутинный процесс - в общем, если запустить компилятор без специальных опций, то на входе он принимает один c-файл, препроцессит его, компилирует, и на выходе выдаёт один объектный файл Чем процесс всё же отличается от современного привычного нам процесса: - из коробки нет никакой автоматизации типа make — равно как и нет никакой поддержки со стороны компилятора по формированию "списка зависимостей", так необходимого в современном мире в больших проектах (см. "инкрементальная сборка" ... ну, хотя бы вот тут: https://stackoverflow.com/ques...al-builds) - компилятор не умеет вызывать линковщик — т.е. LINK.SAV придётся запускать вручную (и на данной дискетке линковщика вообще нет, т.е. он должен быть в составе RT-11) - компилятор не умеет компилировать сразу несколько c-файлов — только по-одному — это несколько утомительно, если файлов действительно много Немного об особенностях этого компилятора я расскажу ниже (см. п.5). Внимательный специалист, наверное, заметил, что компилятор использует некий ассемблер AS. Да, это не MACRO-11, и, более того, это AT&T ассемблер. То есть, у него слегка другой диалект, нежели у MACRO-11 (хотя и не до такой степени "другой", как, скажем, у родного Интеловского ассемблера). Ну, и, конечно, же ... читайте прилагаемую документацию! (файлики .lst на диске) — в ней ВСЁ написано русским по белому. Советую начать, как ни странно, с первой книги — CCPROG.LST // можете её даже распечатать, как рекомендуют разработчики Системы 4. Программа Hello, world! — ну а как же без неё то?! Здесь я буду исходить из того, что в диск hd1 (он же dk) смонтирован каталог c:\rt11\rt11cc со всеми файлами Системы Си. Если же Вы таки примонтировали файл-образ rt11cc.raw, и смонтировали его в диск ld, то я сделаю на эту тему пару комментариев по тексту ниже. На хост-системе создаём текстовый файл hello.c со следующим содержимым: Важно: в системе RT-11 символ конца строки — как в Windows — это комбинация двух символов CR LF. #include >stdio.h> Убедитесь, что Ваш текстовый редактор вставляет именно такие концы строк (особенно если у Вас хост-система не Windows). Важно: помним, что имя файла должно быть не более 6 символов. Обязательно расширение, не более 3 символов. Набор символов ограничен алфавитом RADIX-50: https://en.wikipedia.org/wiki/DEC_Radix-50 Файлик нужно положить в тот каталог на хост-системе, который будет смонтирован в диск hd1 (об этом см. п.1). - если систему положили в каталог c:\rt11\rt11cc и его монтируем в hd1, то и файлик hello.c положите туда же - если систему смонтировали из файла rt11cc.raw, который положили, например, в каталог c:\rt11, то и файлик hello.c тоже положите в c:\rt11 Запускаем эмулятор RT-11 — см. п.1. Если он уже был запущен, то обязательно перезапустите его, чтобы он обновил содержимое каталогов хост-системы (иначе он не увидит Ваш файлик hello.c). Если необходимо, подключаем образ rt11cc.raw командой mount ld: rt11cc.raw (см. п.1 выше). Теперь проверяем, что на диске dk: есть файлик hello.c: Вот, файлик присутствует. Microsoft Windows [Version 10.0.14393] Можно его даже посмотреть: Вроде, совпадает. .type hello.c Теперь очень важный момент! Необходимо в RT-11 создать логический диск c: , который будет связан с тем диском, на котором находится Система Си. // название диска "c:" здесь не имеет абсолютно ничего общего с диском "c:" в Windows/MS-DOS. В DOS это был "третий диск" (после a: и b. Здесь же это просто логический диск, который вот так называется. А называется он "c", скорее всего, от названия системы "Си". Если это не сделать, то ничего не получится! Компилятор рассчитывает на то, что такой диск в системе есть, и он будет обращаться к нему в поисках, например, заголовочного файла stdio.h Если система примонтирована в диск hd1 (он же dk), то команда такая: assign hd1: c: Если система примонтирована в диск ld, то команда такая: assign ld: c: Вот: Теперь запускаем компилятор — в простейшем варианте, т.е. без опций. .assign hd1: c: В общем случае компилятор находится на логическом диске c: , а файлик hello.c находится на диске dk: (который является диском по умолчанию, и его можно не указывать) Поэтому команда в общем случае выглядит так: Если компилятор на самом деле находится на диске dk: (т.е. если Вы последовали моему совету и примонтировали Систему из каталога, а не из raw-файла), то c: можно не указывать, конечно же: .run c:cc hello.c У меня всё скомпилировалось. .run cc hello.c Если бы были ошибки, то компилятор ругнулся бы. Результат можно поискать на диске dk: Отлично, файлик hello.obj имеется. .dir h* Теперь запускаем линковщик — тут, увы, командочка будет слегка посложнее. Линковщик в эмуляторе RT-11 (см. п.1) находится на системном (загрузочном) диске hd0 (он же sy). Поэтому вызываем его с указанием диска — вот такой командой: Приглашение сменилось с точки на звёздочку — это субконсоль линковщика. .run sy:link То есть, в неё нужно вводить команды линковщику, а не системе RT-11. Вводим задание на линковку: // разумеется "звёздочку", как и "точку" в консоли RT-11, здесь впечатывать не нужно — это просто приглашение к вводу от линковщика *hello=c:speis,c:cxlib,dk:hello Обратите внимание, что файлики справа от = необходимо указывать с указанием дисков, на которых они лежат! Иначе линковщик их не найдёт. И вот именно поэтому я ещё раз рекомендую монтировать Систему Си из каталога (а не из файла-образа), и в этом же каталоге работать со своими плохенькими c-файлами — тогда не надо будет постоянно указывать названия дисков — ибо диск c: будет совпадать с диском dk: — а команда линковщику тогда будет существенно короче: У меня всё слинковалось. *hello=speis,cxlib,hello Если что-то не так, то линковщик ругнётся. Что здесь к чему: - первое hello — это имя будущей программы — файл HELLO.SAV, который должен быть создан на диске dk: - знак = — это что-то типа разделителя - speis — это системная библиотека (файл SPEIS.OBJ) — он на диске Си — диск c: — что-то там для поддержки набора инструкций EIS — в жизни это годится для УК-НЦ (км1801вм2) и старших ДВК - cxlib — это самая главная системная библиотека (файл CXLIB.OBJ) — он тоже на диске Си — диск c: - hello в конце — это ранее скомпилированный Вами объектный файл HELLO.OBJ — он находится на диске dk: Чтобы вернуться из субконсоли линковщика в консоль RT-11, нажмите Ctrl+C. Приглашение сменится на точку. Убедимся, что файлик создан: Да, действительно появился файл HELLO.SAV .dir h* Ну, и наконец, запустим его: У меня при запуске программа сначала .run hello После чего уже программа печатает столь долгожданное Hello, world! Честно, я пока не разобрался, как сделать так, чтоб эта простая программка не открывала субконсоль. Можно воспользоваться хаком: Но это какой-то некрасивый путь. .run hello . В общем, если кто знает КАК сделать правильно — напишите, пожалуйста. Я, если честно, вообще не умею работать в RT-11. Содержимое файла HELLO.SAV можно посмотреть в виде восьмеричного дампа: Команда dump по умолчанию печатает на принтер, поэтому её надо вызывать именно с опцией /terminal, чтобы получить вывод в консоль. .dump/terminal hello.sav 5. Познакомимся с особенностями диалекта K&R для RT-11 Ну, я уже немного подустал, поэтому озвучу только действительно важные моменты. Эта Система даёт нам компилятор с диалекта K&R. То есть, это - нечто, что было до стандарта ANSI (он же C89)... и уж тем более это не C99 или C11. Наиболее, наверное, заметное отличие этого диалекта от "привычного нам Си" — это то, как объявляются и определяются функции. Например, определение функции с параметрами будет выглядеть вот так: Обратите внимание, что: int myfunc(x, y) - в списке параметров (в круглых скобках) параметры указаны БЕЗ спецификации типа - но зато потом МЕЖДУ спецификацией параметров и блоком кода они перечислены с указанием типов Сейчас так никто не пишет, конечно же, но, что забавно, современные Си компиляторы до сих пор поддерживают эту нотацию! Объявление функции тоже выглядит нестандартно — здесь параметров вообще не должно быть никаких (даже если потом они таки появятся) — просто пара скобок и всё. Нет "пустого" типа void. (в некоторых реализациях K&R он всё же есть, но конкретно в Этой его нет). Тип данных int является типом по умолчанию. Если где-то тип не указан, то это значит — тип int. Как следствие, функция ВСЕГДА что-нибудь возвращает. Если она ничего не возвращает, то на самом деле она возвращает int-значение, просто оно не определено и использовать его не следует. Вообще K&R позволяет много вольностей в использовании оператора return. Например, Вы можете забыть его написать (или написать без указания возвращаемого значения) — и тогда словите багу, т.к. функция вернёт наружу (если внешний код ожидает, что она что-то вернёт) просто мусор, который как-то нарисовался в регистре R0. Компиляторы, начиная с ANSI, накладывают существенно более строгие ограничения на соответствие спецификации функции её де-факто содержимому. Поля типов-структур принадлежат глобальному пространству имён. Другими словами две разные структуры (в пределах одной единицы трансляции) не могут иметь поля с одинаковыми именами. Нет типа unsigned char... есть только просто char (тип со знаком). Вот это довольно странно для Си на PDP-11, т.к. сама машина такой тип вообще-то предоставляет. Зато есть типы float и double (которых в обычном K&R нету). Есть также enum и union. Нет модификатора const. Константами являются только строковые литералы. Если хотите в итоге получать эффективный бинарный код, начните использовать модификатор register. Данный компилятор будет размещать локальные автоматические переменные в регистрах ЦПУ, только ЕСЛИ они объявлены как register. Иначе он их поместит в стек (как если их объявить с модификатором auto). Диалект K&R ограничивает длину идентификатора 8 символами. Он может быть и длиннее, но два идентификатора, имеющие одинаковые первые 8 символов, будут считаться совпадающими. В случае с Системой для RT-11 к этому добавляются ещё два ограничения: - названия функций и переменных должны быть уникальны в первых 6 символах - а названия глобальных функций и переменных дополнительно должны быть уникальны без учёта регистра — это уже особенность линковщика в RT-11, который не различает регистр Почему именно 6 символов — ну, всё просто, опять этот вездесущий RADIX-50 — 6 символов идентификатора кодируются в 4 байта, которые потом и используются суть как "числовой идентификатор". По той же причине и регистр не различается, т.к. в RADIX-50 есть только 26 букв. Ну, как-то так. Успехов, коллеги! |
Сейчас на форуме |
Tronix
Advanced Member
Откуда: Москва Всего сообщений: 1749 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 15 янв. 2008 |
У меня Диалог в мозгу почему-то прочно ассоциируется с DrWeb. И вот с ними: https://www.dialognauka.ru/ По крайней мере вроде помню 5"25 дискеты Диалог - логотип похож на логтип ДиалогНаука, тлько без Науки. Быгыг. А воще, правильно, что выложили. Достали эти копирасты, везде свой нос суют. На Бетховина копирайты накладывают. И ладно бы там если речь шла о допустим каком-нибудь солид ворксе за мульены баксов, так нет, за какой-то там древний компилятор си для какой-то древней архитектуры, интересный 1,5 человекам от силы максимум. И тут влезли - аааа, пиратство, копирайты!!! Тьфу. |
Tronix
Advanced Member
Откуда: Москва Всего сообщений: 1749 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 15 янв. 2008 |
Попутал, не с DrWeb, а с aidstest и Лозинским, но вообщем одна фигня походу. И прошлое у этих всех антивирусов и Диалогов тоже мягко говоря покрытое мраком. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
xoiss написал: Удалите этот DUMP.SAV - это анахронизьм времен Консула начала 1980-х. Команда dump по умолчанию печатает на принтер, поэтому её надо вызывать именно с опцией /terminal, чтобы получить вывод в консоль. Обычно делается скриншот из окна DESS.SAV Судя по адресу верха программы 010024 - библиотеки таки имеют место быть, без какой-либо оптимизации ( например, оптимизированный компилятор приделывает только те вызовы, которые упоминаются в тексте пользователя ). ( Неплохо бы привести скриншот библиотеки, хотя бы печати текста на терминал - вдруг она заточена на работу в ОЗУ ? Ну а если она заточена под RT-11 - то следует рассмотреть вопрос о программировании в блок- схемах, из школьного курса информатики, т.к. придется еще и RT-11 эмулировать ) Для отладки текста посоветую указать, что команды умножения и деления отсуствуют вовсе, иначе придется цеплять железо калькулятора не к БК11М, а к МС1201.02 или УКНЦ, которые в данный момент у меня отсуствуют ( рабочие ). |
xoiss |
NEW! Сообщение отправлено: 25 октября 2018 19:44 Сообщение отредактировано: 25 октября 2018 19:51
MM написал: никак не могу! он забит гвоздями в системный диск эмулятора RT-11 Удалите этот DUMP.SAV - это анахронизьм времен Консула начала 1980-х. вообще, если честно, так то я пользуюсь утилитой od из Линукса (octal dump, емнип) например, вызов такой: od -A o -t o2z -v три опции означают: - адрес будет в восьмеричной системе - дамп будет тоже в восьмеричной системе, причём словами по два байта (little endian), причём справа будет добавлен ASCII-дамп - дамп будет без "купюр" (т.е. длинные последовательности строк, заполненных чисто нулями, не будут заменяться многоточиями) почти что универсальная открывашка — разве что не умеет на big endian переключаться, если файлик в big endian, а хост-система little endian MM написал: // это делает линковщик — он определяет, что брать, а что не брать по дереву потенциально возможных вызовов оптимизированный компилятор приделывает только те вызовы, которые упоминаются в тексте пользователя в примере там такое месево кода, скорее всего, из-за того, что я сделал вызов printf, который за собой столько всего и тянет — форматирование всех возможных типов данных, включая float point и пр. в документации к компилятору есть советы, как оптимизировать бинарь, если Вы в проекте, скажем, используете printf, но точно не используете печать вещественных чисел (без явного указания от программиста через опции компилятор об этом сам не догадается — вот и тянет всё, что потенциально может потребоваться) там надо компилятор с какими-то опциями запускать — тогда он как-то это сообщит линковщику, и тот не станет подтягивать лишние функции из системной библиотеки в общем, там на самом деле всё достаточно толково продумано, даже с позиций современной науки и техники кроме того, можно скомпилировать код и для процессора 1801вм1 (в котором нет ни EIS, ни FIS инструкций), и для вм2 (где есть EIS), и для процессоров с полной аппаратной поддержкой EIS/FIS MM написал: да Для отладки текста посоветую указать, что команды умножения и деления отсуствуют вовсе, иначе придется цеплять железо калькулятора не к БК11М, а к МС1201.02 или УКНЦ, которые в данный момент у меня отсуствуют ( рабочие ). я здесь привёл предельно (ну, на сколько смог) упрощённый пример — просто как "быстро стартануть" — конечно, без нюансов про оптимизации, совместимость с реальным железом и пр. эти вопросы немного выходят за рамки Этой темы // но, да, они наверняка возникнут в теме про калькулятор Б3-23 на процессоре 1806вм2 на самом деле там есть масса опций для включения/выключения EIS, FIS и вообще там два компилятора — CC и CCNHD — как раз из-за этого вопроса // в проекте Б3-23 на 1806вм2 в коде симулятора и адаптера я НЕ использую никакие системные библиотеки вообще, не использую float/double, и не использую умножение/деление — т.е. только сложение/вычитание и только для int или char спасибо! |
Сейчас на форуме |
Technomancer
Advanced Member
Откуда: Рига Всего сообщений: 359 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 июня 2016 |
Спасибо, очень интересно, обязательно попробую на живой машине. |
xoiss |
NEW! Сообщение отправлено: 26 октября 2018 1:02
Technomancer написал: Ну, тогда — обязательно фотоотчёт!! Спасибо, очень интересно, обязательно попробую на живой машине. |
Сейчас на форуме |
xoiss |
NEW! Сообщение отправлено: 30 октября 2018 3:19 Сообщение отредактировано: 30 октября 2018 19:02
Всем привет! Продолжая соседнюю тему, портировал симулятор Б3-23 на RT-11. // симулятор обсуждается здесь: topic/30830 Вот пример, как это скомпилировать, и как это потом работает: А вот архив с необходимыми исходниками и даже со скомпилированным исполняемым файлом (который B323.SAV): https://yadi.sk/d/3C8hZkXq0QWPPg // можете попытаться скомпилировать сами, а можно и просто SAV-файл попробовать запустить // // вирусов для ДВК нет Симулятором пользоваться так: - запускаем (см. скриншот) - в ответ на # жмём RETURN (так пропускаем ввод параметров программы) - читаем приветствие - далее вводим, какие клавиши мы как бы нажимаем на калькуляторе Б3-23, и подтверждаем ввод клавишей RETURN - читаем, что выдал симулятор — в каждой строке он как бы после нажатия очередной клавиши выдаёт (1) содержимое индикатора, (2) содержимое двух операционных регистров, (3) состояние триггеров устройства управления - ну и т.д. - когда надоест, жмём CTRL/Z Успехов! [upd] перезалил архив с исходниками и скомпилированным b323.sav - поправил символ конца строки LF на CR LF (сорри, у меня Линукс - вот и забываю иногда такую замену делать) - выставил всем файлам дату 1998 год, чтоб всамделишная RT-11 не ругалась, что там BAD-блок |
Сейчас на форуме |
xoiss |
NEW! Сообщение отправлено: 30 октября 2018 18:48 Сообщение отредактировано: 30 октября 2018 18:54
Сегодня зашёл к ребятам в Яндекс Музей. Цель: запустить на УКНЦ или ДВК программу Симулятор Б3-23. Коллеги, большое Вам спасибо (и, прежде всего, Виктору) за терпение меня и за оказанную помощь! После многострадальных страданий таки с NN-ой попытки программу удалось запустить. Вот фото-пруф: Правильная последовательность действий была такой: 1. Выставить на ПиСи-компьютере 1998 год!!! иначе, похоже, ничего не получится 2. Зайти в эмулятор RT-11 и заново пересобрать исполняемый файл b323.sav, чтоб у него дата была 1998. Как это сделать, см. выше 3. Взять какой-нибудь RAW-образ 80-дорожечной дискетки, открыть эмулятор RT-11, смонтировать образ дискетки в эмуляторе: (пусть mydisk - это имя файла-образа, не длиннее 6 символов!) mount ld: mydisk.raw важно: нужен образ именно от 80-дорожечной дискетки! т.е. чтобы файл mydisk.raw был размером ровно 819200 байт 4. Если на дискетке (уже смонтированной) нет достаточно места, то освобождаем его, удаляя "лишние" файлы: возможно, с них надо будет сначала снять защиту del ld:* 5. Скопировать SAV-файл на смонтированный образ: unprotect ld:* 6. Файл mydisk.raw, который на хост-системе, в результате действительно поменяется. В него эмулятор дозаписал файл b323.sav copy b323.sav ld: 7. Теперь этот RAW-образ надо нарезать на дискетку, например, при помощи того же SAMdisk. Команда (на ПиСи-шке) такая: 8. Нарезанную дискетку вставить в УКНЦ или ДВК и попробовать запустить с неё файл b323.sav. Что-то типа команды: samdisk mydisk.raw a: -c80 -s10 Нюансы, которые нас настигли: ru mz1:b323.sav 1) дата у SAV-файла (и вообще у всех файлов на диске) должна быть, например, 1998 год (ну, может, 1999 тоже годится) — иначе настоящая RT-11 сообщает, что на этом месте файл с BAD-блоками 2) требуется некоторая магия с дисководом на УКНЦ и ДВК — у нас на двух машинах с советскими дисководами просто элементарно не читался файл b323.sav (который был нарезан на дискетку в составе отредактированного образа) — т.е. мы его даже не могли скопировать (copy) или прочитать (type). Взлетело только на машине Квант-4, на которой был импортный дисковод TEAC. Возможно, впрочем, проблема была не в самом приводе, а в его контроллере. Виктор сказал, что на Квант-4 у них стоит прошаренный КМД с прошивкой "255" — кому интересно, вот эта тема (я НЕ рекламирую, просто уточняю, о чём речь идёт): http://zx-pk.com/forum/viewtopic.php?f=7&t=5293 3) в силу того, что на УКНЦ и "обычной" ДВК файл просто не прочитался, то мы не проверили, заработал ли бы он там или нет. Скорее всего заработал бы. Но на Квант-4, во всяком случае, заработал Всем спасибо! |
Сейчас на форуме |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
xoiss написал: Там не магия с колдовством требуются, а металлист для ликвидации всяких там ГАВНОВОДОВ типа МС5305, МС5313, МС6022, болгарии и т.п. требуется некоторая магия Ну а насчет МС5311 - строжайший тест на Бренд дисках с хранения - хоть один трек прочтет с 2-й попытки - сразу его молотком 1-килограмовым, и металлисту в мешок. Да и Тики разные бывают... |
Technomancer
Advanced Member
Откуда: Рига Всего сообщений: 359 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 июня 2016 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 30 октября 2018 20:31 Сообщение отредактировано: 30 октября 2018 21:38
У меня, как человеку, очень близкому к компютерным сетям аж больно смотреть как вы мучаетесь с дискетамы и ДОСом. Как я только что сделал: 1. Скачал архив xoiss-а, распаковал. 2. Черес SCP скопировал файл B323.SAV на свой Kermit-сервер. Это Raspberry-Pi компютер, который у меня стоит всё время включенным и подключен к ДВК-3М через переходник USB-ИРПС. На ДВК это подключено к свободному ИРПС, который на адресе 176560. 3. Включаю ДВК, загружаюсь с MX. 4. Запускаю Kermit-клиент на RT-11, выбираю линию связы XL. 5. Скачиваю ранее скопированный файл B323.SAV на MX1 дискету. 6. Выхожу из Kermit-a и запускаю B323. Заработало. Это может показатся сложным, но это всё довольно просто и привично, не нужно дискеты ставить вообше в ДОС-овские машины и в принципе они у меня стоят в одном и том же дисководе. Таким же образом хочу и две другие свои ДВК подключить к "сети" после запуска. Кстати, xoiss, респект за симулятор. Нравится функциональность и реклама форума при выходе. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Technomancer написал: Есть способ еще малость по-проще. Это может показатся сложным Только надо MAX-232 и ЛП5 приделать на М-ЭВМ ДВК, и можно будет гонять 57600 бод на RS-232 в эмуляторе господина Патрона, в т.ч. записывать диски МХ-МУ-DW и т.п. Скорость работы по каналу 57600 не особо медленней работы с МХ на дисководе МС6022, ИМХО. В самом крайнем случае, возможно и 115200, если поставить кварц х2 в М-ЭВМ ДВК, но сам этого не пробовал ( для перекачки винчестера ). |
xoiss |
NEW! Сообщение отправлено: 30 октября 2018 21:48
... ну, в том то и дело, что компьютеры Яндекс Музея ничем больше, кроме дисководов, не оборудованы — поэтому сегодня у нас было без вариантов — пришлось выкручиваться конечно, у ребят есть "хотелка" снабдить все машины хотя бы Flash-дисками или, в идеале, каким-то адаптером, который позволил бы такой "диск" отображать на какой-то сетевой каталог Яндекса... ... но пока это всё именно что "хотелки" — этим надо предметно заниматься, а тут, в первую очередь, время уходит на работу с посетителями // в отношении Kermit — вариантов, на самом деле, много — я когда-то пользовался протоколом xmodem (даже писал его реализацию на какой-то "свистелке") // в частности, он был в составе Hypertem (кажется так), что в составе Windows XP (емнип), что было когда-то весьма сподручно |
Сейчас на форуме |
Technomancer
Advanced Member
Откуда: Рига Всего сообщений: 359 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 июня 2016 |
Flash-диск без спор, это стабильно, просто и быстро. Kermit для меня довольно стабилно работают и этот способ такой как бы с оригинальным софтом. Поэтому мне и нравится. В общем-то я как раз поиски способа передачи файлов начинал с поиском x-modem-ного софта, но для RT-11 именно Kermit нашелся. Тут уже была тема как я его запускал, и как всё получилось то так и оставил. Если это входит в тему, могу в какой-то момент здесь написать минимум для запуска Kermit-а. Кстати, у того же самого Кванта как раз и есть свободный последовательный порт который мозно использовать для обмена информации со "сервером". |
xoiss |
NEW! Сообщение отправлено: 31 октября 2018 1:20
Technomancer написал: Безусловно, "входит в тему"! Если это входит в тему, могу в какой-то момент здесь написать минимум для запуска Kermit-а. // кстати, если в качестве "сервера" можно использовать ПиСи-шку, то (сугубо для Яндекс Музея), думаю, это было бы хорошим вариантом И ещё, пожалуйста! пришлите фотки, как у Вас процесс выглядит. // тем более, что, как минимум, одна у Вас точно есть - я знаю! |
Сейчас на форуме |
Technomancer
Advanced Member
Откуда: Рига Всего сообщений: 359 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 июня 2016 |
Xoiss, вот, выкладываю, но там у меня одна непонятка. И сразу извиняюсь за качество фото. 1. Через Kermit скачиваю исходной файл - HELLO.C на диск DK: который у меня MX1:. 2. Проверяю что файл действительно находится на MX1:. 3. И проверяю содержимое файла. 4. Пробую запустить компилятор прямо от DK: или MX1:, но не получается. Сделаю диск C:, который по сути MX1:, и заработало. Почему так? Почему именно C:? Это как-то связано с DOS-овскими именам дисков? Это как раз и моя непонятка по работу компилятора. 5. Проверяю что после работы компилятора появился файл HELLO.OBJ и запускаю линковщик. Кстати, может быть есть смысл тут и LINK.SAV выкладывать, чтобы всё было в одном месте? 6. После работы линковщика проверяю, что создан исполняемый файл HELLO.SAV. 7. Запускаю HELLO.SAV и наслаждаюсь результатом. Xoiss, ладно, договорились, я выложу описание Kermit-а, но не скоро, надо проверить как переслать файлы из Windows-а, а то пока только на Linux-е у меня сервер стоят. |
xoiss |
NEW! Сообщение отправлено: 31 октября 2018 15:21 Сообщение отредактировано: 21 ноября 2018 18:58
Спасибо!! >> Пробую запустить компилятор прямо от DK: или MX1:, но не получается. Сделаю диск C:, который по сути MX1:, и заработало. Почему так? Почему именно C:? Это как-то связано с DOS-овскими именам дисков? Это как раз и моя непонятка по работу компилятора. Кратко: диск C: обязателен. Компилятор ищет на нём файл stdio.h, а потом, возможно (но я не уверен), ещё и as.sav. Точный ответ — в руководстве CCPROG.LST, а именно, строки 342-356 и 473-501. Если "своими словами", то суть такая: - в Си директива #include имеет две формы: (1) с указанием файла в угловых скобках и (2) с указанием файла в двойных кавычках - вторая форма рекомендуется в том случае, если Вы подключаете заголовочный файл, являющийся частью Вашего же проекта, — вот, например, как здесь: https://github.com/xoiss/b3-23...ain.c#L38. Тогда компилятор будет начинать поиск включаемого файла в текущем рабочем каталоге (на RT-11 - это DK: ), потом просмотрит список каталогов, указанных в строке вызова компилятора опцией "-I" (в нашем примере отсутствуют), и только потом поищет его в системных библиотеках (на RT-11 - это специальное логическое устройство C:, а в Линуксах — набор каталогов, а-ля /usr/include и др.) - первая же форма рекомендуется, если Вы подключаете заголовочный файл какой-либо стандартной библиотеки. Тогда СОВРЕМЕННЫЙ компилятор будет вести поиск в обратном порядке: начнёт с каталогов системных библиотек и закончит текущей директорией. Но это именно для современных компиляторов... - ... для данного компилятора маршрут поиска файла, заданного первой формой (в угловых скобках), ограничивается ТОЛЬКО каталогом системных библиотек — это специальный диск "C:". Соответственно, не найдя его там (например, потому что такого диска нет вообще), он НЕ будет пытаться искать его на DK: или ещё где-либо и выдаст ошибку Название C, надо полагать, означает "Си". >> Кстати, может быть есть смысл тут и LINK.SAV выкладывать, чтобы всё было в одном месте? Да, наверное, можно было бы. Я просто поленился это делать, т.к. он уже есть на "системном диске" SY: в эмуляторе RT-11. >> ... а то пока только на Linux-е у меня сервер стоят ... так и у нас тут (в Яндексе) сервера на Линуксе Спасибо за подробный отчёт!! |
Сейчас на форуме |
xoiss |
NEW! Сообщение отправлено: 31 октября 2018 15:26
... кстати, кто-нибудь знает, как в командном файле (.COM) в RT-11 отдать команду CTRL/C ? зачем? суть в том, что, например, линковщик принимает аргументы в отдельной субконсоли (промпт "звёздочка") и, чтобы завершить сеанс работы с линковщиком, надо отдать ему команду CTRL/C при ручном вводе - это сделать понятно как но если команды впечатаны в командный файл — то тогда как? |
Сейчас на форуме |
XPOHOMETP
Advanced Member
Всего сообщений: 752 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мая 2015 |
xoiss, сами напросились Вот так тоже должно работать: .LINK HELLO,C:SPEIS,C:CXLIB Аналогично .LINK /EXE:B323 SPEIS,CXLIB,MAIN,ADCON,SIMUL |
xoiss |
NEW! Сообщение отправлено: 31 октября 2018 17:38
спасибо! понял, значит у директивы LINK немного другой формат аргументов, нежели у программы LINK.SAV // а ведь когда-то в 92-94-х я это всё знал... не подскажите, как всё-таки CTRL/C из командного файла отдать? // на самом деле и LINK.SAV тоже можно запустить прямо со строкой аргументов: .ru sy:link b323=speis,cxlib,main,adcon,simul // он тогда не открывает субконсоль — т.е. мой вопрос - он, скорее, на перспективу спасибо! |
Сейчас на форуме |
XPOHOMETP
Advanced Member
Всего сообщений: 752 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мая 2015 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 31 октября 2018 18:06 Сообщение отредактировано: 31 октября 2018 18:13 Что-то не припоминаю я там такой возможности... не подскажите, как всё-таки CTRL/C из командного файла отдать? Так тоже не пишут. Запуск программы с системного диска - просто R: .ru sy:link .R LINK abcdef |
Technomancer
Advanced Member
Откуда: Рига Всего сообщений: 359 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 июня 2016 |
Я так подумал - а каждая следующая команда в COM файле исполняется после завершения предыдущей, правильно? А раз уж так, тогда CTRL/C Вы не можете подать так-как линковщик работу завершил, но еще открыт. Разьве не так? Это только мои предположения. |
Arseny
Advanced Member
,,,=^..^=,,, Откуда: Bryansk, Russia Всего сообщений: 1722 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 окт. 2005 |
xoiss написал: ^C (в кодировке УКНЦ - это кривой дефис) не подскажите, как всё-таки CTRL/C из командного файла отдать? |
XPOHOMETP
Advanced Member
Всего сообщений: 752 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мая 2015 |
Arseny написал: Были смутные воспоминания, но... ^C (в кодировке УКНЦ - это кривой дефис) В эмуляторе RT-11 и в эмуляторе ДВК не работает... Речь ведь про два символа (галочка ^ над цифрой 6 и буква С)? Или что-то другое набивать? |
Arseny
Advanced Member
,,,=^..^=,,, Откуда: Bryansk, Russia Всего сообщений: 1722 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 окт. 2005 |
XPOHOMETP написал: В эмуляторе УКНЦ работает. Проверил. В эмуляторе RT-11 и в эмуляторе ДВК не работает... XPOHOMETP написал: Я набирал текстовый файл в винде и там он выглядит как "галочка ^ над цифрой 6", но в эмуляторе отображается как горизонтальная Г (если покажет, то вот она ¬) Речь ведь про два символа (галочка ^ над цифрой 6 и буква С)? Вот что у меня было для проверки: dump Если просто запустить DUMP (или убрать из COM файла ^c), то он ждет ввод имени файла. |
XPOHOMETP
Advanced Member
Всего сообщений: 752 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мая 2015 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 31 октября 2018 23:58 Сообщение отредактировано: 1 ноября 2018 15:41
Arseny написал: Самое смешное, что DUMP, DIR, PIP, DUP действительно завершаются по ^C из командного файла. Вот что у меня было для проверки: В т.ч. на эмуляторах RT-11 и ДВК. Извиняюсь, ввел в заблуждение, но лишь частично А вот LINK.SAV так завершаться по прежнему не хочет, а на нем и пробовал изначально. Похоже по ^C в линковщике завершается выполнение командного файла, а не самой программы. Логичного объяснения не нахожу, чей глюк - непонятно. Но RT11SJ v05.04 плюс LINK v05.45 и RT11SJ v04.00 плюс LINK v06.01 ведут себя одинаково (плохо)... UPD: LINK.SAV не хочет завершаться по ^C из командного файла, если перед этим >CTRL/C> в файле есть пустая строка - просто >CR>,>LF>: R LINK Пустая строка вставлялась для вывода на экран версии программы LINK. Если вставить ^C сразу за вызовом LINK или после строки с реальными именами файлов для линковки, то ^C отрабатывается нормально. DUMP, DIR, PIP и т.п. таким дефектом не страдают... |
xoiss |
NEW! Сообщение отправлено: 1 ноября 2018 1:47
Arseny написал: О, спасибо! Я набирал текстовый файл в винде и там он выглядит как "галочка ^ над цифрой 6", но в эмуляторе отображается как горизонтальная Г (если покажет, то вот она ¬) Попробовал — да, работает! (в эмуляторе RT-11) Действительно, просто два печатных символа ^ (caret) и C. Может быть, Вы тогда сможете и на второй вопрос ответить? Когда я запускаю свою программу, она первым делом печатает на экран символ # и ждёт ввода. Я проверил, она ждёт ввода параметров командной строки (если их ввести сразу в строке запуска, то символ # уже не печатается). Вот пример программы (к сожалению, движок разметки на сайте настойчиво так не хочет сохранять отступы слева в тексте): Так вот, вопрос: можно ли как-то отключить запрос этих параметров, если они моей программе не нужны? |
Сейчас на форуме |
Technomancer
Advanced Member
Откуда: Рига Всего сообщений: 359 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 июня 2016 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 8 ноября 2018 12:05 Сообщение отредактировано: 8 ноября 2018 12:33
Обмен информацией с ОС RT-11 через последовательный порт используя протокол Kermit. Начну с того что я не профессионал не RT-11, не PDP-11 и в моём описании могут быть ошибки и неточности. Если кое-что такое находите, пожалуйста, указывайте на них, я всё проверю и исправлю. Описание данного способа я сделал с надеждой что это поможет другим энтузиастам PDP-11 не мучится с записю дискет на ПК, несобместимостю дисководов и других проблем, которые возникает при передачи информации с ПК на ДВК. Первым делом надо установить связь между последовательным портом ПК и портом ИРПС ДВК. Если у вас уже установлена связь между ДВК и ПК, переходите дальше на запуск Kermit-a. Каким образом подключить ДВК к ПК. 1. способ - прямое подключение к контроллеру КР1801ВП1-035 последовательного канала. Если удобнее подключится через USB - нужен кабель USB-UART (последовательный порт с уровнямы ТТЛ например кое-что такое). Если проще через RS-232 тогда нужна платка с преобразователем МАХ232 (или аналогичным), которая из уровней RS232 делает уровни ТТЛ. И нужна микросхема ТТЛ инверторов, например К155ЛН1, ЛА3, ЛП5, 74HC04 или любой другой логический элемент, которуй можно использовать как инвертор. Дальше смотреть схему. Сигнал Tx из ПК через инвертор подаются на 28. ногу контроллера, сигнал из 27. ноги контроллера через инвертор подаются на Rx в ПК. 29. ногу контроллера (разрешение передачи) нужно посадить на землю. Без этого плата ДВК не будет передавать данные. Дорожки резать не надо так как к 28,29 ногах контроллера подключается выходы открытого коллектора, которые не будет мешать инверторам. 2. способ - подключение переходника RS232 или UART к ИРПС. 2.1 Очень простая схема переходника RS232 на ИРПС, но я сам данный способ подключения не пробовал так что немогу комментировать. Автор схемы _Patron_, найдена тут же на форуме. Нельзя забыть что при таком подключении на разъеме ИРПС нужно соединить сигналы ГП+ с ГП- иначе связь не будет работать. 2.2 После запуска своей первой платы ДВК с 1. способом, я сам пользовался переходником UART-ИРПС по такой схеме: 3. способ - переходник USB-ИРПС, который я разработал для стабильной связи с линиям ИРПС. Параметры соединения на плате МС1201 устанавливается с помощи переключателей на плате. Я в своём примере использую плату МС1201.02, документацию которой можно найти здесь. Там на 17. странице описаны установки скорости и адреса порта ИРПС. При подключения терминального эмулятора к консольному порту ДВК, скорость можете выбирать любую, но 9600 самая быстрая и стандартная. Адрес ИРПС должна быть установлена 177560. На странице 25. есть начальные установки и других переключателей. На TeraTerm (и любому другому эмулятору терминала) установка скорости должна совпадать с установкой на плате ДВК. Если подключение правильное и плата исправная, после включения ДВК на экране ПК вы увидите адрес и симбол "@". Дальше, нужна программа терминального эмулятора на ПК, которая поддерживает протокол Kermit. Я использую TeraTerm официально скачиваемую здесь. Программа доступна и на русском языке. Третье, на ДВК нужна программа Kermit-а, две версии (KRT.SAV и KRTMIN.SAV) можно скачать здесь. Там можно найти и подробные описания работы Kermit-а. Можно использовать мануалы и с других местах и для других версии, но синтаксис параметров разных версии может отличатся. Любим способом нужную версию Kermit-а нужно получить на ДВК. Запуск Kermit-а на ДВК. Kermit в нашем случае при передаци файлов может работать в режиме четырёх команд: 1. RECEIVE - ждут пока второй конец отправит файл командой SEND. 2. SEND - отправляет файл. 3. SERVER - запускает Kermit в режиме сервера, но это я использую только на Linux-овском Kermit сервере. 4. GET - запрашивает файл из сервера. Начну со самым простым случаем - к ДВК консольному порту вмето терминала подключен Windows-овский ПК. В таком случае на ДВК можно использовать программу KRTMIN так как она запускается быстрее. 1. Передача файла на ДВК. 1.1. Запускаю TeraTerm на ПК, устанавливаю связь с ДВК, загружаю RT-11. Командой DIR просматриваю содержимое дискеты. Тут две маленькие нюансы - как видите TeraTerm в моём случае не поддерживает кириллицу, но как это устранять я не смотрел. Второе - команда LOAD XL в данном случае нам не нужна, она у меня прописана в файле STRTSB.COM. 1.2. Запускаю KRTMIN на ДВК. 1.3. Подаю команду RECEIVE. Kermit теперь ждут пока ему отправят файл. 1.4. Выбираю возможность передать файл через Kermit. 1.5. Отправляю простой текстовый файлик RTEST.TXT. Открывается окно статуса передачи. 1.6. После отправки подаю команду EXIT для выхода из Kermit-а и возвращаюсь в консоль RT-11. 1.7. Командой DIR убеждаюсь, что файл передан успешно и командой TYPE вижу содержание файла. Всё, файл успешно передан в ДВК. 2. Передача файла из ДВК в ПК. 2.1. На ПК выбираю в какую папку попадут принятые файлы. File->Change Directory. 2.2. Запускаю KRTMIN и подаю команду отправки файла. В моем примере это программа TSTMX.SAV. Команда - SEND TSTMX.SAV. 2.3. В TeraTerm запускаю приём файла в меню File->Transfer->Kermit-Receive. Откроются окно статуса приёма. Здесь один неболшой нюанс. Симболы в последней строке, это SEND пакета от Kermit-а. Получается что после команды SEND Kermit хочет начинать передачу файла, но я еще не запустил Receive, а эмулятор терминала принятые данные интерпретируют как произвольный текст. Это ничего страшного. 2.4. После успешного приёма файла оно находится в папке, которую я выбирал раньше. Всё, теперь Вы можете передать файлы туда и назад через последовательный порт даже не вытаскивая дискеты с ДВК. Процесс не очень быстрый, но по-моему не такой кропотливый как с использованием дискет. Иногда бывает и ошибки, но или они легко понятны (например дискета полная) или это решается перезагрузкой программы или ДВК. Отделное спасибо участнику xoiss за редактирование моей статьи. Со временем я выложу еще несколько вариантов передачи файлов через Kermit в ДВК - черес второй последовательный порт и настройки Linux-овской машины для работы в роли Kermit-сервера. Так же хочу попробовать запустить Kermit на БК, УКНЦ у Э-85, но это дела неопределённого будущего. |
Technomancer
Advanced Member
Откуда: Рига Всего сообщений: 359 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 июня 2016 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 ноября 2018 11:31 Сообщение отредактировано: 22 ноября 2018 11:34
2. часть - обмен информацией с ОС RT-11 через дополнительный последовательный порт. Тут шагов по-больше, но тоже ничего сложного. Во Вашей системе должно быть как минимум два последовательных порта ИРПС. Один с адресом 177560 для системного терминала и второй с адресом 176560 для подключения ПК. Такое возможно, например, при использовании КЦГД (КЦГД на адресе 177560 а ИРПС на МС1201 на 176560) или при использовании плат с каналамы ИРПС - КТЛК, УПО или других (ИРПС на МС1201 на 177560 а напирмер КТЛК один канал на 176560). Физическое соедиднение между ПК и ДВК никак не отличается от методов соединения в моей первой статье. 1. Первое, последовательный порт обслуживает драйвер XL. Так что на системном диске должен быть файл XL.SYS (скачиваемый здесь). При загрузке драйвер должен быть загружен командой LOAD XL. Если дополнителный порт в корзину не установлен, выводится сообшение ошибки. Команду LOAD XL можно прописать в загрузочном файле STRTSB.COM чтобы драйвер загружался при старте системы. Также в первый раз нужно проверить параметры драйвера XL. Командой SHOW DEV смотрю параметры доступных драйверов. Адрес должен быть 176560 а вектор рерывании - 320. Как я вижу, у меня вектор прерывании неправильный. Командами SET XL CSR=176560 и SET XL VECTOR=320 устанавливаю правильные параметры драйвера XL. Установки сохраняется и в следующий раз драйвер загрузится уже правильно. Я претполагаю что можно подать и команду UNLOAD XL и LOAD XL чтобы перегрузить только драйвер с новыми установками, но я до этого не додумался и перегружал RT-11. 2. Включаю таймер на пульте ДВК. Без таймера программа KRT при запуске на минуту зависнет и выводит ошибку "Time clock is not running". В этот раз нужно запустить программу KRT так как в программе KRTMIN нету возможности переключится на второй порт ИРПС. При нормальном запуске Kermit-а выводится сообшение и попадаю в консоль Kermit-а. 3. Как видно из начального текста, после запуска Kermit для связи используют устройство TT:, это порт системного терминала. Нужно подать команду SET LINE XL чтобы Kermit переключился на второй порт ИРПС. 4. Дальше работа особо не отличается от раньше описанных команд SEND и RECEIVE. Но есть один нюанс. В протрамме KRTMIN при подаче команды RECEIVE есть довольно много времени для выбора передаваемого файла до того как происходит таймоут. Но почему-то в программе KRT, команда RECEIVE таймоутится буквально через секунду. Поэтому перед командой RECEIVE нужно установить максимальное значение таймоута командой SET RECEIVE TIME_OUT 94. После этого таймоут произойдут намного позже и будут достаточно времени для выбора передаваемого файла. Будете внимательны! Здесь небольшой баг. Скажем, подавая команду "SET ?", Kermit выведут все командой SET устанавливаемые параметры. Также при команде "SET RECEIVE ?", Kermit выведут все параметры суб-меню RECEIVE. Один из этих параметров TIME-OUT. Устанавливая этот параметр, Kermit не ругается, НО этот параметр не влияет на реальный таймоут! Поэтому нузно менять параметр TIME_OUT. Очевидно опечатка. Так же я советую подать команду SET TERMINAL TTY, чтобы Kermit не использовал VT100 ESC коды не поддерживаемые платамы КЦГД и КСМ. С КЦГД ничего страшного, но КСМ очевидно часть ESC кода понимает как управляющий симбол и подвисает с надписю "ЗВЫВ" в служебной строке. 5. Дальше пользоватся командам SEND и RECEIVE так же как написано в первом части о Kermit-е. Это как бы всё. Да, это может показатся как-то кропотливо, но при системе, которая налажена чтобы работал Kermit, вся работа происходит довольно просто и быстро, нужно только запомнить несколько команд. В следующей части я напишу о Kermit-а на Linux-е в режиме сервера и о командах GET, REMOTE CD, REMOTE DIR, с которыми очень удобно просмотреть файлы, которые находится на сервере. В еще следующей части я запущу платы КТЛК и УПО как второй порт ИРПС. |
<<Назад Вперед>> | Страницы: 1 2 3 4 | Печать |
Полигон-2 » Старый софт » Программы под RT-11 |
0 посетителей просмотрели эту тему за последние 15 минут |
В том числе: 0 гостей, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |