Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-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 написал: Ну, тогда — обязательно фотоотчёт!! Спасибо, очень интересно, обязательно попробую на живой машине. |
Сейчас на форуме |
<<Назад Вперед>> | Страницы: 1 2 3 4 | Печать |
Полигон-2 » Старый софт » Программы под RT-11 |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |