Форум

Пожалуйста или Регистрация для создания записей и тем.

Операционная система ЭТ-10 (испытание в имитаторе)

Дополнение к иллюстрациям работы в имитаторе с "Отладочной ОС ЭТ-10" на странице https://d3-28.ru/programmy/et-10-tsejtlina-a-s-moskovskij-vniiz/

В свежезапущенном имитаторе перед запуском ОС ЭТ-10 надо установить "бит b4=1" (командами View>Display, <F1>, <4>, "Да", "Нет", <F1>) и сбросить в ноль параметры служебной строки "фрязинского дисплея" (<F8>, <F9>, <F8>). Затем View>Machine, через меню File находим у себя в компе и открываем скачанный с https://d3-28.ru/wp-content/uploads/2018/05/k12b_et-10.txt файл k12b_et-10.txt с байт-кодом программы ОС ЭТ-10.

UPD: а лучше открывать отредактированный файл  k12b_et-10__red-28213.txt (в нём, как мне думается, удалось исправить одну ошибочку; комментарий о том есть в конце самого этого файла.  Ссылка в архиве программ: https://d3-28.ru/wp-content/uploads/2019/06/k12b_et-10__red-28213.txt )

Загрузка: <C>, <L>, <K> (это проверка контрольной суммы загрузчика: КС=3550), <C>, <S> . Загрузив 37 блоков, машина ожидает СИП (Синхро Импульс Периферии): зажигается индикатор ожидания ответа периферийных устройств. Запуск: View>Display, <F5>. Отказ от вывода списка инструкций: <N>. Система выводит знак вопроса, это приглашение к вводу команд,  см. документ ET-10.pdf на странице https://d3-28.ru/programmy/et-10-tsejtlina-a-s-moskovskij-vniiz/  Ниже - ссылки на скриншоты, поясняющие, какие действия выполнялись дальше.

1. Подали команду ВП нажатием клавиш <W>, <P> для ввода пользовательской программки. Все команды подтвержаются клавишей <Пробел>. Нулевой "Начальный Адрес" задали клавишей с цифрой ноль. Набрали учебную программку "счётчик Y с шагом X=1" по стандарту мнемоники из "Справочника программиста. 3.857.100 Д3" ( https://d3-28.ru/dokumentatsiya-d3-28/spravochnik-programmista/ , сброшюрованный уважаемым shattered документ d3-28pg.pdf есть здесь: https://drive.google.com/file/d/0B8vr5xq7JIHPNWVVeUJCU0NmbUE/view?usp=drivesdk  ). Номер шага для кодов программки  ОС ЭТ-10 выводила сама, мы набирали только "слова команд на ассемблере" в режиме "ЛАТ", подтверждая каждую строку клавишей <Backspace> (в имитаторе РУС/ЛАТ переключает клавиша <Ctrl>), и система немедленно переводила мнемонику в байт-код.

После ввода END система вывела параметры программки. Проверили их командой <K>,<P>. Через меню File закрыли прежний txt-файл и открыли заранее созданный пустой файл my_save.txt. Клавишами <Z><L> дали команду "записать на ленту" 2 копии программки с начального адреса 0, т.е. с того места в ОЗУ, где мы её и набирали. На скриншоте окно имитатора показано на фоне окна вьюера с файлом my_save.txt:  видно, что система справилась с заданием - записала в txt-файл две копии нашей учебной программки "счётчик Y с шагом X=1".

Командой <Z>, <P> запустили программку с её начального адреса 0. При этом экран дисплея как бы "завис". Работа этой программки видна на табло, в режиме View>Machine; там же остановили машину клавишей <Enter>, и вернулись в ОС ЭТ-10, нажимая с прижатой <Ctrl> клавиши <1>, <0>, <1>, <3>, <1>, <1>, <0>, <8> (тем самым мы "с пульта машины" подали коды 1013 1108 команды "JSTT 1108"):

https://yadi.sk/i/ZDqiw2VD3WfYQd

2. Вот изображеие табло, подтверждающее успешный запуск программки из ОС ЭТ-10 - к данному моменту счётчик Y досчитал до 93 с шагом X=1:

https://yadi.sk/i/aVB-d7_T3WfYJd

Затем, как уже сказано, вернулись в ОС ЭТ-10 командой "JSTT 1108". Короче говоря, в имитаторе команды подаются так, как объяснялось в "руководстве к имитатору": регистр  РУС или  ЛАТ изменяется клавишей <Ctrl>, все буквы набираются только латинскими клавишами компа, подача машинных кодов с пульта -  цифровыми клавишами  с постоянно прижатой <Ctrl>.

3. С адреса 10 набрали другую версию "счётчика Y"; в ней после DIG 1 идёт DIG 0, поэтому считать она будет с шагом X=10. Для разнообразия набирали не "на ассемблере", а прямо машинными кодами; согласно описанию ОС ЭТ-10 байт-коды вводили в hex-форме с включённым режимом РУС. Система это поняла и сама в каждой строчке выводила мнемонику байт-кодов. Для проверки, после команды КП, дали команду ПЧДП, которая выводит байт-код "в стандарте Д3-28". И командой ЗЛ один экземпляр программки с адреса 10 "записали на ленту" в прежний txt-файл; на вьюере эта новая запись в  txt-файле видна ниже второй копии первой программки:

https://yadi.sk/i/5-kH_5u83WfYVp

4. После ещё ряда упражнений (не сильно толковых) "считали с ленты" командой СЛ на адрес 80 программку "7-11-2017_tablo-XY-test__KP-637_N-36.txt". Она должна выводить цифры на табло машины из десятичных ячеек с номерами 000 и 001. Адреса этих ячеек отсчитываются от значения 0 в индексном регистре данных "BD", и данные располагаются в первых 16 байтах программки (а затем после метки "MARK 0514" идут собственно операторы программки) - так задумано в случае с начальным адресом 0. Но сейчас эта программка загружена на адрес 80, поэтому нужно добавить в неё код для засылки 80 в "BD".

Это и стало целью очередного упражнения: посмотреть, как в ОС ЭТ-10 работает "поиск метки", и редактирование программки "прибавлением шага". На картинке всё это видно: команда НМ - найти метку с адреса 80, :0514 - имя метки, ОС нашла метку на шаге 97, и мы командой ПЧДП вывели с адреса 97 часть проги на экран, чтобы увидеть место, которе следует отредактировать. Затем в режиме "Ввод Программы" дали на шаге 103 команду "Прибавить Шаги": 2 байта. Ввели два байта D9 50, что в hex-нотации означает заслать в регистр S9 (это второй байт регистра "BD") байт 0500 (т.е. десятичное число 80):

https://yadi.sk/i/zY_bvpW53WfYaL

Для возврата в режим приёма команд (он отображается как вопросительный знак) надо, как учит описание ОС ЭТ-10, на клавиатуре терминала нажимать СУ вместе с В; в имитаторе это означает, что включаем CapsLock, затем нажимаем <W>, и затем ещё раз нажимаем <CapsLock>, чтобы выключить CapsLock.

5. Командой ПЧДП с начальным адресом 97 проверили, что программный код отредактировался желаемым образом. И заодно командой ПЧДП с начальным адресом 0 проверили, что в ОЗУ системы ещё жива наша самая первая программка. А последнюю программку командой ЗП запустили:

https://yadi.sk/i/rMXyuhAn3WfYju

6. В режиме View>Machine видим, что программка с адреса 97 успешно запустилась и работает:

https://yadi.sk/i/ZnB_8Rrs3WfYr6

7. После останова и возврата в ОС ЭТ-10 запустили программку с адреса 10. Она тоже нормально работает - счётчик Y считает с шагом X=10:

https://yadi.sk/i/NADDrHXD3WfYxS

8. Команды этих двух запусков и возвраты в ОС ЭТ-10 видны на следующем скриншоте; тут же видны и дальнейшие действия - поставили снова "магнитную ленту" my_save.txt, тремя командами ПВ (перемотка вперёд) пропустили  три записи (это две копии первого "счётчика Y"  и одна запись второго "счётчика Y"), и командой ЗЛ с адреса 80 записали нашу третью программку (см. байт-код на изображении вьюера на заднем плане):

https://yadi.sk/i/Tw8TQlTL3WfZ76

9. Для полноты картины вывели на экран начальные строки программки с адреса 80. Это данные для цифр на табло, а операторы собственно программки начинаются после метки на шаге 97 (дизассемблеры Д3-28 не отличают данные от кодов команд, и поэтому интерпретируют данные бессмысленной мнемоникой; ну что ж поделать, к этому приходится привыкнуть):

https://yadi.sk/i/lZ8bXd-33WfqUj

Таким образом, в этих упражнениях мы командами ОС ЭТ-10 разместили в ОЗУ машины три программки; убедились, что их можно набирать "на ассемблере Д3-28" или кодом в hex-нотации, редактировать, "записывать на ленту и считывать с ленты", запускать и останавливать любую из них, возвращаясь в режим ввода команд ОС ЭТ-10, дизассемблировать их машинные коды. Так что, "ОС ЭТ-10" это действительно Операционная Система, притом очень даже симпатичная для времён "эпохи Д3-28" 🙂