yaPDP — Руководство пользователя

Добро пожаловать в машинный зал. Это руководство проведёт вас по каждой странице эмулятора — от первого запуска до самых глубоких настроек, — чтобы вы проводили время за машиной, а не за чтением документации.

Всё описанное ниже относится и к версии в браузере, и к настольному приложению на Tauri.


Оглавление

  1. Быстрый старт
  2. Пультовая панель (страница Panel)
  3. Консоль оператора
  4. Пользовательские терминалы (TTY 1 / TTY 2)
  5. Построчный принтер LP11 (страница Printer)
  6. Векторный дисплей VT11 (страница Display)
  7. Хранилище (перфолента, образы дисков и лент)
  8. Состояние машины (кнопка STATE)
  9. Конфигурация (страница Config)
  10. Гостевые операционные системы
  11. Кнопки, сочетания клавиш и индикаторы
  12. Устранение неполадок
  13. Настольное приложение

Быстрый старт

При самом первом запуске эмулятор встречает вас короткой подсказкой, которая сразу объясняет, что делать: какую страницу открыть, какие гостевые ОС смонтированы и какими командами они загружаются. Кнопка Quick boot рядом с Got it открывает мастер напрямую, так что новичок одним нажатием видит работающую гостевую ОС:

Подсказка первого запуска

Подсказка первого запуска.

Волшебная палочка

Спешите? Используйте кнопку magic wand в правом верхнем углу окна. Она остаётся на всех страницах, кроме Info. Одно нажатие делает всё:

  1. Открывает список всех гостевых операционных систем (и перфолент), образы которых есть в этой сборке — список фильтруется по манифесту сборки (media/manifest.json) плюс всё, что вы добавили перетаскиванием. Перфоленты остаются в списке всегда.
  2. Выбирает одну, переключается на консоль оператора и перезагружает машину.
  3. Вводит команду загрузки — и логин тоже, там где учётные данные известны (например Unix V5: boot rk0 → unix → login root).

Список быстрого запуска

Список быстрого запуска показывает каждую гостевую ОС и перфоленту.

Мастер учитывает приглашения: он следит за выводом консоли и вводит логин только тогда, когда гость действительно напечатал login:, поэтому медленные загрузки с большим объёмом вывода (например 2.11 BSD) всё равно надёжно доходят до приглашения. Каждый гость также объявляет нужный ему профиль машины — например RT-11/RSX/RSTS включают построчный принтер LP11, а Unix V5/BSD требуют консоль-телетайп, — так что мастер при необходимости перенастраивает машину и автоматически продолжает загрузку. Каждый запуск из мастера начинается с чистой страницы (свежая бумага и очищенные экраны).

Пока вводится последовательность, всплывающее уведомление «Autoloading in progress…» блокирует ввод эмулятора: терминалы, пульт и сама страница не реагируют ни на клавиатуру, ни на мышь — так ни один ваш символ не вклинится в то, что печатает мастер. Единственный выход до окончания — кнопка Take control!: она немедленно прерывает автозагрузку и возвращает машину вам.

Уведомление об автозагрузке

Пока мастер вводит, ввод заблокирован; Take control! останавливает автозагрузку и возвращает управление.

Образы дисков и лент занимают несколько мегабайт, поэтому на медленном канале машина может надолго замолчать. Тонкая полоса Loading N% внизу окна показывает, сколько образа уже загружено — и при автозагрузке, и при ручной загрузке, и при монтировании.

Классический способ

  1. На приглашении @ наберите boot rp1 и нажмите ENTER.
  2. BSD 2.11 автоматически загрузится в многопользовательский режим. Войдите как root (без пароля).
  3. Попробуйте ls, ps -aux, df — или скомпилируйте программу на C командой cc.

Команда загрузки в руководстве записана прописными (BOOT RK1), потому что так она работает на любой консоли: у телетайпа Model 33 ASR вообще нет строчных литер, поэтому строчная команда с него до машины не дойдёт. На видеотерминале (VT52 или VT100) строчные работают так же хорошо — гость их приводит сам.

Пультовая панель (страница Panel)

Каждый тумблер, светодиод и поворотный переключатель настоящего PDP-11/70 воспроизведены точно. Страница Panel — это то место, где вы вводите загрузчик тумблерами так же, как инженеры DEC в 1970-х.

Пультовая панель PDP-11/70

Пультовая панель PDP-11/70, питание включено.

Последовательности переключения тумблеров

Простой «бегущий огонёк» — введите это, чтобы увидеть, как пляшут светодиоды адреса и данных:

Switch sequence: HALT, 001000, LOAD ADDRESS
012700, DEPOSIT
000001, DEPOSIT
006100, DEPOSIT
000005, DEPOSIT
000775, DEPOSIT
001000, LOAD ADDRESS, ENABLE, START

Перезапуск загрузчика:

HALT, 120000, LOAD ADDRESS, ENABLE, START

Кнопка Bootstrap now! отказывается запускать машину, пока питание выключено:

Bootstrap now! — защита при выключенном питании

Bootstrap now! требует, чтобы машина была сначала включена.

В том же диалоге есть ярлык к опции CONFIG Auto-boot: поставьте галочку, чтобы при каждом последующем включении питания автоматически выполнялась загрузка по умолчанию, не заходя на страницу Config. Выбор сохраняется и синхронизирован с галочкой на странице CONFIG.

Консоль оператора

Консоль оператора — это то, что PDP-11 использует как свой TT0:, собственная пишущая машинка машины. В зависимости от страницы CONFIG это либо телепайп Model 33 ASR, либо один из двух видеотерминалов: DECscope VT52 (см. ниже) или DEC VT100.

Телетайп Model 33 ASR

Консоль отрисована как аутентичный Model 33 ASR светло-кремового/бежевого цвета: рулон бумаги позади поднимающегося листа, стеклянное окно каретки и штампованный логотип Teletype Corporation на нижней лицевой панели.

Консоль оператора Model 33 ASR

Консоль оператора Model 33 ASR на приглашении @.

Нажатие на подпись позиции сразу переключает на неё; нажатие на сам круглый диск переключателя поворачивает его на один щелчок по часовой стрелке (START → STOP → FREE → AUTO), как поворот настоящего переключателя.

VT52 в качестве консоли

Когда консольный терминал установлен в VT52, консоль оператора становится DECscope с его аутентичным белым/серым (P4) люминофором на чёрной трубке — полное поведение см. ниже в разделе «Пользовательские терминалы», оно общее.

DECscope VT52 в роли консоли оператора

DECscope VT52 в роли консоли оператора, показывающий приглашение @.

VT100 в качестве консоли

Установите консольный терминал в VT100, и консоль станет DEC VT100 — ANSI-терминалом, пришедшим на смену DECscope. Он нарисован в собственном корпусе, со своими пропорциями (арт принадлежит терминалу, а не перелицованному DECscope), и наследует всё, кроме самой трубки: разметку страницы, кнопку зума и зум двойным нажатием, расположение STATE/REBOOT и обработку клавиатуры.

DEC VT100 в роли консоли оператора

DEC VT100 в роли консоли оператора, показывающий приглашение @.

VT100 — это надмножество VT52, ровно как и само железо: последовательности DECscope продолжают работать, а терминал добавляет грамматику ANSI (последовательности CSI, приватные режимы DEC, области прокрутки, наборы символов G0/G1), на которой говорит с момента включения — VT100 это машина только с CRT и у неё нет режима твёрдой копии, в который нужно сначала войти. То, чего на железе никогда не было, отвергается, а не подделывается: прямая адресация ESC Y, включение/выключение графики ESC F/ESC G, режимы клавиатуры VT52 и ответ-идентификация VT52. На вопрос, кто он (CSI c), VT100 отвечает VT100 with AVO, а CSI ? 2 h (DECANM) переводит его в режим совместимости с VT52, как делала настоящая машина.

Две опции CONFIG принадлежат только этому терминалу: люминофор трубки — P4 белый, с которым VT100 выпускался, или P1 зелёный — и щелчок клавиш (клавиатура DECscope была механической и щёлкать ей нечем). Переключатель VT52 reverse video принадлежит самому DECscope и никогда не затрагивает VT100: там инверсный текст появляется по атрибуту SGR 7, который посылает программа.

Пользовательские терминалы (TTY 1 / TTY 2)

До двух пользовательских видеотерминалов (показываются только если настроены на странице CONFIG) позволяют гостевым ОС, предпочитающим видеотерминалы, работать рядом. Каждый — это DECscope VT52 или DEC VT100, выбирается независимо (None | VT52 | VT100), и каждый нарисован в корпусе выбранного терминала: либо наклонный моноблок DECscope (корпус из формованного пластика цвета слоновой кости с вентиляционной решёткой, утопленный экран в глубокой рамке и гладкая боковая панель с выступающим гребнем), либо собственный корпус VT100. Ввод идёт с физической клавиатуры, как на оригинальных машинах.

Пользовательский терминал VT52

Пользовательский терминал VT52 (TTY 1) с интерактивной сессией.

Пользовательский терминал VT100

Пользовательский терминал VT100 (TTY 2) — та же страница, то же поведение, собственный корпус.

Построчный принтер LP11 (страница Printer)

LP11 — это анимированный построчный принтер на широкой бумаге на 132 колонки (выбирается 72/80/100/132). У него нет клавиатуры — он только печатает. Кнопка Print отправляет накопленные задания на настоящий системный принтер через системный диалог, а Save.txt экспортирует вывод (разрывы страниц сохраняются как маркеры \f).

Построчный принтер LP11

Построчный принтер LP11 печатает листинг задания.

Векторный дисплей VT11 (страница Display)

Дополнительный процессор векторной графики DEC VT11 с собственной страницей на CRT с зелёным люминофором (логическое разрешение 1024×768, автоматически масштабируется под окно). Включается на странице CONFIG.

Lunar Lander использует его — мастер быстрого запуска сам включает дисплей и переключается на страницу Display.

Lunar Lander на векторном дисплее VT11

Lunar Lander, нарисованный на векторном CRT VT11.

Хранилище (перфолента, образы дисков и лент)

Страница Storage управляет всеми видами носителей. В ней две вкладки — Images и Paper Tapes — потому что это два совершенно разных рабочих процесса. Образ — это целое устройство, смонтированное в машину и запоминаемое между сессиями; перфолента — поток байтов, который читатель проходит от первого кадра до конца.

Страница Storage — вкладка Images

Страница Storage, вкладка Images: зона перетаскивания, смонтированные образы, экспорт диска и сохраняемые изменения диска.

Вкладка Images:

Какой файл какому устройству соответствует:

Образ Привод Контроллер Загрузить командой
rk0 … rk5 картридж RK05 RK11 boot rkN
rl0 … rl3 картридж RL01 / RL02 RL11 boot rlN
rp0 … rp4 пакет RP04 / RP06 RP11 boot rpN
ra0 … ra2 RA80 / RA81 (MSCP) UDA50 boot raN
tm0 … tm2 магнитная лента 9 дорожек TM11 boot tmN (RSTS восстанавливается через ROLLIN)
*.ptap читатель/перфоратор перфоленты PTR11 boot pr

Страница Storage — вкладка Paper Tapes

Страница Storage, вкладка Paper Tapes: выбор файла для читателя, зона перетаскивания .ptap и экспорт перфорированной ленты.

Вкладка Paper Tapes:

Примечание: читатель перфоленты управляется байтами консоли — каждый байт, эхо-выведенный в консоль, пробивает соответствующую строку отверстий на перфоленте ASR.

Состояние машины (кнопка STATE)

Круглая кнопка STATE (левый верхний угол, справа от REBOOT) открывает диалог состояния машины — это полное сохранение и восстановление эмулируемого PDP-11, а не только процессора: регистры, память, каждое устройство ввода-вывода (консоль, терминалы, принтер, диски, лента и перфоратор/читатель перфоленты), бумага в телетайпе и LP11, содержимое экранов видеотерминалов (и VT52, и VT100) и даже картинка на векторном дисплее VT11. По сути это файл сохранения всей машины.

Диалог состояния машины

Диалог состояния машины с одним только что сохранённым состоянием.

Кнопка STATE повторяет логику REBOOT и доступна на страницах Panel, Console (телетайп, VT52 или VT100) и TTY. Состояния хранятся в IndexedDB браузера и переживают перезагрузки и сессии.

Конфигурация (страница Config)

Страница Config управляет эмулируемыми периферийными устройствами, и её настройки сохраняются между сессиями. Форма разделена на четыре вкладки, действия Apply и Restore defaults находятся на панели под вкладками:

CONFIG — вкладка Equipment

Оборудование

CONFIG — вкладка Look & sound

Вид и звук

CONFIG — вкладка Behaviour

Поведение

CONFIG — вкладка Development

Разработка

Уход со страницы Config с неприменёнными изменениями запрашивает подтверждение, так что ничего не теряется молча:

Предупреждение о неприменённой конфигурации

Эмулятор предупреждает перед уходом со страницы Config с неприменёнными изменениями.

Структурные изменения (тип консоли, терминалы, принтер, дисплей VT11) применяются кнопкой Apply, которая перезапускает машину, чтобы эмулируемое оборудование совпало с конфигурацией. Ширина печати, скорость телетайпа, флаги Upper Case Only и Force PDP Output Uppercase, щелчок клавиш, обратное видео, эффекты CRT, текстовый режим VT52, гул машины и фотография-фон применяются сразу. Restore defaults заполняет форму заводскими значениями (применяются кнопкой Apply); четыре «живые» опции BEHAVIOUR — Reboot confirmation, Help Me! sticker, Machine power и Auto-boot — сбрасываются к заводским сразу, не дожидаясь Apply (машина при этом выключается, так как заводское состояние — off).

Гул синтезируется через Web Audio на отдельном звуковом канале, поэтому он никогда не перебивает звуки телетайпа/принтера или щелчок клавиш VT100.

Гостевые операционные системы

Эмулятор поставляется с готовыми к загрузке образами дисков и лент. Просто наберите boot на приглашении @ — или выберите нужный с помощью волшебной палочки.

В сборке с урезанным набором образов (например, настольный вариант Minimal) строки, чей образ не поставляется, затемнены и помечены image not in this build — таблица показывает ровно то, что здесь можно загрузить.

Disk Operating System Boot Command What Happens Credentials
RK0 Unix V5 boot rk0 unix → войти как root root
RK1 RT-11 v4.0 BOOT RK1 загружается сразу в монитор RT-11
RK2 RSTS V06C-03 BOOT RK2 мастер вводит START на приглашение Option:
RK3 XXDP (diagnostics) BOOT RK3 полевая диагностическая система DEC
RK4 RT-11 3B Distribution BOOT RK4 дистрибутив базовой версии RT-11
TM0 RSTS 4B-17 (tape) BOOT TM0 следуйте процедуре восстановления ROLLIN
RL0 BSD 2.9 boot rl0 rl(0,0)rlunix → CTRL/D → логин root root
RL1 RSX-11M v3.2 BOOT RL1 автостарт; введите дату по запросу
RL2 RSTS/E v7.0 BOOT RL2 мастер вводит START на приглашение Option:
RL3 XXDP (extended) BOOT RL3 расширенная библиотека тестов XXDP
RP0 ULTRIX-11 V3.1 boot rp0 загружается в однопользовательский режим (multi-user — известный баг эмулятора)
RP1 BSD 2.11 boot rp1 автозагрузка в многопользовательский режим, логин root (без пароля) root (no password)
RP2 RSTS/E v9.6 BOOT RP2 загружается до запроса даты; далее 11,70 / PDP 11,70 (PDP)
RP3 RSX-11M v4.6 BOOT RP3 автостарт; введите дату и время по запросу
RP4 RSTS/E v10.1 BOOT RP4 загружается до запроса даты; далее 11,70 / PDP 11,70 (PDP)

Кнопки, сочетания клавиш и индикаторы

Переключение страниц

Боковая панель переключает между страницами:

Плавающие элементы управления

Элемент Где Что делает
Кнопка magic wandВолшебная палочка Правый верхний угол (все страницы, кроме Info) Список быстрого запуска — выбирает гостевую ОС, перенастраивает, перезагружает и вводит загрузку/логин. См. Быстрый старт.
Кнопка перезагрузкиПерезагрузка Левый верхний угол, справа от боковой панели Круглая кнопка со значком рестарта. Перезапускает машину; при включённом Auto-boot загружает и встроенный загрузчик по умолчанию. По умолчанию сначала запрашивается подтверждение, с опцией «Don't show this warning anymore». Без Auto-boot после перезагрузки машина останавливается.
Кнопка MuteБез звука (Mute) Левый нижний угол, справа от боковой панели Круглая кнопка, выключающая все звуки разом — гул, телетайп/LP11, подача и отрыв бумаги, щелчки клавиш и звонок. Состояние сохраняется вместе с остальной конфигурацией.
Кнопка FullscreenПолноэкранный режим Правый нижний угол окна Плавающая кнопка, скрывающая интерфейс браузера и системы (адресную строку, рамку окна ОС, панель задач), не трогая интерфейс эмулятора. Нажмите ещё раз или Esc, чтобы вернуться.
Кнопка зумаМасштаб терминала Правый нижний угол, слева от кнопки полного экрана Плавающая кнопка, скрывающая корпус терминала и увеличивающая экран до максимального размера 4:3, какой позволяет окно. Состояние запоминается для каждого терминала.

Диалог подтверждения перезагрузки

Кнопка REBOOT по умолчанию запрашивает подтверждение: в диалоге есть ярлык Auto-boot (Start the default bootstrap automatically after reboot) и опция «Don't show this warning anymore».

У каждой кнопки вывода в боковой панели есть маленький мигающий зелёный светодиод в правом верхнем углу: он пульсирует, пока PDP-11 пишет вывод в эту консоль/терминал (а на кнопке Printer мигает всё время задания печати), и гаснет примерно через полсекунды после прекращения вывода.

Устранение неполадок

Образ не загружается

Если образ гостевой ОС не удаётся получить целиком — большой образ BSD, оборванный хостингом на середине загрузки, или образ, которого нет в сборке Minimal, — эмулятор не зависает молча. Диалог в том же общем стиле, что и подсказка первого запуска, объясняет, что образ неполный, и предлагает кнопку Open Storage, которая сразу переходит к зоне перетаскивания, чтобы вы вручную бросили туда скачанный файл.

Формулировка подстраивается под окружение: страница, открытая как локальный file://, объясняет, что браузер блокирует загрузку каталога с медиа (и предлагает локальный веб-сервер), а сборка Tauri Minimal объясняет, что образ не входит в поставку, и указывает на зону перетаскивания.

Диалог ошибки загрузки образа

Неполный образ вызывает этот диалог с ярлыком Open Storage.

Снапшот отклонён после обновления образа

Снапшот хранит память и регистры машины, а не сам образ диска: при восстановлении он накладывается на тот диск, который эмулятор поставляет сейчас. Если образ с тех пор обновили, они перестают совпадать — файловая система гостя в памяти перестаёт описывать лежащий под ней диск, и это проявляется как повреждённая файловая система, а не как что-то очевидное.

Эмулятор это обнаруживает и отказывается восстанавливать снапшот вместо того, чтобы испортить диск. Он называет образ и обе сборки и предлагает удалить снапшот:

Снапшот снят на другой сборке

Снапшот снят на другой сборке диска: он не восстанавливается, и его можно удалить прямо отсюда.

Сделайте новый снапшот на текущей сборке или удалите устаревший — перенести снапшот на диск, с которого он не снимался, нельзя.

Настольное приложение

Предпочитаете нативное приложение? Тот же эмулятор упакован как офлайн-приложение для Windows x64 и Linux на Tauri. Доступны два варианта установщика:

Вариант Что содержит Примечания
Minimal rk0 (Unix V5), rk1 (RT-11), bootcode и демонстрационные перфоленты (BASIC-11, ODT-11, ED-11, Lunar Lander) Примерно 19 МБ в Windows. Загружаемый файл — это само приложение, вместе с графикой и звуком, а встроенные образы добавляют около 1 МБ. Все остальные образы перетаскиваются в окно во время работы.
Full все образы — диски RK/RL/RP/RA, ленты TM, все перфоленты Примерно 103 МБ в Windows, зато все пятнадцать загрузочных образов загружаются офлайн без единого лишнего шага.

Для Linux размер инсталляции для всех конфигураций может быть существенно больше (зависит от формата).