Проект моделирования истории компьютеров и SIMH
Я получил свой первый компьютер в конце 1978 года в качестве подарка на день рождения. Это был TRS-80 модели 1 с 4 Кбайт памяти и кассетным накопителем, который я позже заменил на флоппи-дисковод Exatron. За несколько недель мои навыки программирования на BASIC углубились настолько, что я превысил объем доступной памяти в своей еще не скомпилированной программе. Знай я тогда столько же, сколько знаю 30 лет спустя, будучи инженером по микропрограммному обеспечению, я все равно тратил бы большую часть времени на то, чтобы втиснуть как можно больше кода и данных в меньшее адресное пространство.
История вычислительной техники завораживает, как и некоторые из ранних моделей компьютеров. Многие из первых машин были простыми калькуляторами, такие как Z1, построенная Конрадом Цузе в 1931 году, а еще раньше ― механическая сортировочная машина Германа Холлерита, которая использовалась в переписи населения 1890 года; шесть лет спустя компания Холлерита стала одной из составляющих IBM. Цузе изобрел также первый алгоритмический язык программирования Plankalkül для своего компьютера Z4. Z4 был электромеханическим (на основе реле), поддерживал 64 слова памяти и работал с умопомрачительной скоростью 40 Гц (при потребляемой мощности 4 КВт). Профессор Джон Атанасов разработал первый цифровой компьютер, который начал строить в 1937 году и закончил в 1941 году ― он использовал двоичную систему счисления для расчетов в Колледже штата Айова. Идеи, положенные в основу компьютера Атанасова-Берри (ABC), были применены в первой ЭВМ общего назначения ENIAC. Программирование этих систем было бы чуждо большинству из нас, выросших с Pascal, C или LISP. Например, при программировании первого ENIAC, чтобы внести изменения в программу, требовалось физически переписать ее. Википедия содержит увлекательную информацию об эволюции компьютеров (см. раздел).
Как и мой старый TRS-80, который безжизненно покоится в заппыленной коробке, история вычислительной техники может легко уйти в небытие. К счастью, есть люди, такие как Боб Супник, которые тратят время и энергию на спасение наиболее важных моментов истории вычислительной техники. Супник создал Проект моделирования истории компьютера, чтобы восстановить значимые вычислительные системы с помощью моделирования. Проект Супника, в котором участвуют энтузиасты со всего мира, привел к созданию многосистемной структуры, называемой SIMH , имитирующей большое количество вычислительных систем. В их числе Nova от Data General, PDP и VAX от DEC, IBM 1401 и 7090/7094, системы Interdata и даже компьютеры Altair компании MITS (на процессорах 8080 и Z80). Другие моделируемые системы перечислены по ссылке, приведенной в разделе .
Давайте сначала рассмотрим общую архитектуру SIMH, а затем познакомимся с некоторыми примерами применения SIMH для загрузки моделируемого старого оборудования.
Описание SIMH можно найти в документе "Написание имитатора для системы SIMH". В нем представлены основные функции SIMH и характеристики различных машин, моделируемых системой (см. раздел ).
SIMH ― это среда, в которую встраиваются эмуляторы систем. Исследуя иерархию дерева исходного кода SIMH, вы найдете набор общих файлов имитатора с рядом подкаталогов, содержащих модели машин (или классов машин). Как показано на рисунке 1, имитатор состоит из пакета управления имитатором (содержащего такие элементы, как консоль имитатора, терминал и библиотеки файлов ввода/вывода, а также таймеры и сокеты) и набора устройств. Дух устройства ― это набор регистров для хранения состояния устройства (когда оно включено) и блоки, отображающие наборы данных (обычно, файлов, которые используются для представления устройства). Могут присутствовать не все устройства, например, сетевое оборудование не моделируется.
Когда на имитаторе запускается виртуальная машина, пакет управления имитатором в первую очередь определяет особенности среды (массив устройств, программа двоичного загрузчика, имитатор набора команд и т.п.). Как вы скоро увидите, после запуска имитатора с ним можно взаимодействовать для загрузки виртуальной машины (или для упрощения процедуры разместить эту программу взаимодействия в файле). По существу, имитатор ― это отладчик, который позволяет устанавливать контрольные точки и работать с устройствами, процессором и памятью. Код легко читаем и не так велик, как можно было бы ожидать, учитывая количество функциональных возможностей, предоставляемых SIMH.
Давайте посмотрим, каким образом SIMH возвращает нас к заре компьютерной эры. В этом разделе сначала объясняется, как установить и собрать SIMH, а затем рассматриваются пакеты программ.
Следующий сеанс иллюстрирует, как загрузить и построить SIMH. Он демонстрирует версию SIMH 38.1, и на сайте нужно проверить, не появилась ли новая версия пакета. Как отмечается в листинге 1, прежде чем составить пакет, мне пришлось создать подкаталог./BIN.
Выполнив шаги, перечисленные в листинге 1, вы получаете набор двоичных файлов в подкаталоге./BIN, которые соответствуют отдельным имитаторам (например, ibm1130 и vax780).
На предыдущем шаге мы построили имитатор SIMH. Однако чтобы он был полезен, необходимо программное обеспечение (операционные системы и приложения) для этого имитатора. Эти системы работали с перфолентами и магнитными лентами, но для простоты использования программное обеспечение, содержавшееся на этих носителях, было переупаковано в файлы. В рамках этих демонстраций мы расскажем о необходимых комплектах программного обеспечения и покажем, где их можно взять.
Запустив имитатор (по имени моделируемой машины, например, altairz80), вы увидите командную строку sim> . Это приглашение говорит о том, что вы находитесь в основном имитаторе, который нужно настроить на моделируемый объект. В этой статье рассматриваются лишь некоторые из многочисленных исполняемых команд. Чтобы увидеть обширный список, можно воспользоваться командой help . Важно также отметить, что во время эмуляции одной из поддерживаемых машин можно воспользоваться клавишей Ctrl-E, чтобы вернуться в имитатор. Здесь можно устанавливать контрольные точки, изучить регистры, посматривать очередь событий имитатора и т.п.
Теперь, имея общее представление о SIMH, можно поговорить о его применении с различными компьютерными системами. Мы рассмотрим работу LISP на системе IBM 1130, UNIX® на 32-разрядной системе Interdata, CPM на машине Altair от MITS и Focal на PDP-15.
Система IBM 1130 была популярным компьютером на рынке не очень дорогих систем. Она опиралась на перфокарты и перфоленту, но также использовала дисковую память (общей емкостью 1 МБ). На диске хранились операционная система и данные.
Система 1130 появилась в 1965 году, когда основным языком программирования был Фортран (компилятор которого, написанный целиком на языке ассемблера, занимал всего 4000 слов в памяти). Система работала с адресным пространством на базе 15-разрядных слов, что ограничивало емкость оперативной памяти машины 64 Кбайт.
Один из интересных аспектов системы IBM 1130 заключался в поддержке альтернативных языков. Кроме Фортрана, 1130 можно было программировать на APL и RPG. Гай Стил, имевший доступ к 1130 в Латинской (средней) школе Бостона, написал интерпретатор LISP, который можно использовать и сегодня. Начнем с получения загрузки интерпретатора LISP с сайта, посвященного системе 1130 ibm1130.org (см. листинг 2). Заметьте, я предполагаю, что вы находитесь в подкаталоге./SIMH, где установлен SIMH.
Это эмуляция скрывает многие детали работы с SIMH, но служит интересным историческим экскурсом в одну из областей применения 1130. Это пакетная обработка данных, когда имитатору ставится задача, а результат распечатывается в файле листинга. Задача ― очень простой пример использования интерпретатора LISP (результат можно видеть на выходе). Сеанс пакетной обработки приведен в листинге 3.
В ретро-компьютерах есть что-то поистине захватывающее. Все, что мы имеем сегодня, произошло от старших поколений вычислительных систем, многие из которых уже не функционируют. Проект SIMH возвращает к жизни это оборудование (а также операционные системы и приложения), чтобы сделать их доступными для молодого поколения.
Современные компьютеры и современные браузеры достигли серьезных высот производительности. Лет десять назад интерактивное веб-приложение казалось чудом, а теперь на JavaScript пишут не только игры или, скажем, но даже эмуляторы старых компьютеров. Мы выбрали несколько наиболее интересных эмуляторов, которые порадуют любителей старины и всех, кто интересуется историей вычислительной техники.
MESS (Multi Emulator Super System, часть проекта MAME) - один из старейших эмуляторов домашних компьютеров, игровых приставок и научных калькуляторов. Отличается он тем, что поддерживает не один процессор или архитектуру, а около 250 разных систем. JSMESS - это порт MESS на JavaScript, разработанный Джейсоном Скоттом по заказу Internet Archive. JSMESS доступен на archive.org вместе с внушительным каталогом игр и софта для разных старинных платформ. Интересно, что для эмуляции PC в качестве прослойки тут используется DOSBox. Но если это и сказывается на производительности, то незначительно: можешь хоть сейчас погонять в Prince of Persia , и работать он будет не хуже, чем когда-то на «двушке» у папы на работе.
PCjs - это семейство эмуляторов старых процессоров, среди которых Intel 8080, x86, PDP-11 и одна из реализаций MOS 6502. На главной странице pcjs.org есть интересная подборка готовых конфигураций и образов, в том числе виртуалки с MS-DOS, PC-DOS, OS/2 и даже Windows. Windows 95 нам загрузить не удалось, а вот Windows 3.11 медленно, но завелась. Запустив одну из машин, не забудь заглянуть в список доступных образов дисков - там можно обнаружить подборки редкого софта и операционок (к примеру, Minix и SCO Xenix). Как вариант - можешь загрузить свой образ диска или дискеты в формате IMG.
Этот родственник PCjs отличается тем, что, помимо x86, эмулирует Mac Plus и Atari ST. Интереснее всего, пожалуй, демонстрация Mac OS System 7 - и не только потому, что автор не поленился добавить картинку с классическим «Макинтошем». По скорости работы система чуть ли не превосходит оригинал, а на диске HD 2 находится несколько папок с программами и играми. На том же сайте есть эмулятор IBM PC/XT с приложенными к нему демками Monkey Island, Civilization и Wolfenstein 3D.
Если говорить о браузерных эмуляторах Atari, то Javatari - это, наверное, лучший из них. Он, в частности, используется на сайте Virtual Atari , где собрана коллекция из 550 игр. Если же ты вдруг захочешь развлечься программированием на ассемблере для Atari 2600 или просто решишь полюбопытствовать, как раньше делали игры, то обязательно загляни на сайт 8bitworkshop.com : он на одной странице позволяет править исходники и наблюдать за изменениями.
Шумиха вокруг браузерных эмуляторов начала набирать обороты в 2011 году, когда Фабрис Беллар запустил проект JSLinux - эмулятор ПК с Linux, который работает на его домашней страничке. С тех пор идею Беллара неплохо развили: проект Virtual x86 предлагает на выбор список из семи дистрибутивов UNIX и Linux, а также Windows 1.01, Windows 95 и 98, Kolibri OS и Oberon. В отличие от PCjs, этот эмулятор не пытается стартовать Windows с нуля и ограничивается загрузкой образа оперативной памяти. Даже для Windows 98 это всего 12 Мбайт, так что процесс идет быстро. Увы, все операционки максимально урезаны и не имеют подключения к интернету.
Для тех, кто родился в СССР, компьютерная ностальгия часто связана с ZX Spectrum. Пока что лучший браузерный эмулятор «Спектрума» из того, что нам попадалось, - это уже упомянутый JSMESS. Помимо него, существуют
Здравствуйте, уважаемые хабарчане!
Я интересуюсь «древними» компьютерами и операционными системами. Несмотря на их древность, многие из них гораздо более продуманнее современных систем и лучше подходят в качестве примеров. Windows и Linux есть чему поучиться у многих устаревших ОС.
По-моему самые интересные из старых систем - мейнфреймы и поздние миникомпьютеры (супермини). В отличие от ранних миникомпьютеров, которые часто лепились на коленке конечного пользователя под его нужды, системы мейнфреймов и супермини с самого начала были предназначены для людей не имеющих ни полного представления о работе компьютера ни времени на разработку отдельной архитектуры для каждой задачи. При этом, в отличие от современных систем (4 гигабайта оперативки на набор этого поста), мейнфреймы и в особенности супермини были очень ограниченны в ресурсах и не как правило не разрастались.
В этом посте я опишу процесс установки операционной системы VM/370. VM/370 - операционная система IBM для компьютеров IBM System/370. Это многопользовательская ОС работающая по принципу гипервизора control program (CP): каждому пользователю предоставляется своя виртуальная машина, в которой он может запустить желаемую ОС, в частности сам гипервизор CP (немногие современные гипервизоры способны на такой трюк) и CMS - однопользовательскую ОС, бабушку MS-DOS. Прямой потомок VM - zVM до сих пор используется на мейнфреймах IBM System z. Подробнее о VM можно прочитать в Википедии .
Для тех кто хочет не красноглазить, а просто посмотреть конечный результат: есть готовые образы системы с подробными инструкциями (правда на английском). Остаток статьи можно не читать.
со следующим содержанием:
ARCHMODE S/370 # Мы хотим эмулировать компьютер S/370,
CPUMODEL 3158 # модели 3158.
CPUSERIAL 000777 # Это поле не имеет значения.
ECPSVM NO # Отключить ускорение виртуализации (пока я с ним не разобрался).
MAXCPU 1 # Однопроцессорная система.
NUMCPU 1 # С одним процессором включённым при старте (привет, кеп)
OSTAILOR VM # Не оповещать нас о "странных" для многих ОС, но типичных для VM ошибках.
LOADPARM 0120....# Если честно, я сам не понял что это.
MAINSIZE 16 # 16 мегабайт оперативной памяти (по тем временам - роскошь).
XPNDSIZE 0 # Без дополнительной памяти (CP её не использует).
# Адрес папки с нашей системой.
DEFSYM MyDir /home/link/Programming/LEGACY/SYSTEMS/System360/vm370habr
# Номер TCP/IP порта для telnet.
CNSLPORT 3270
Устройства
# В System/370 устройства адресуются (в простейшем случае)
# тремя шестнадцатеричными цифрами:
# - Номером канала,
# - Номером управляющего блока,
# - Номером устройства.
# На управляющем блоке должны висеть устройства сходных типов.
# На первый канал имеет смысл подключать медленные устройства.
# Первый столбец - адрес устройства.
# Второй - тип.
# Дальше идут настройки, для всех устройств разные. Их точное значение
# можно посмотреть в руководстве Геркулеса.
008 3215-C NOPROMPT # Первый телетайп для оператора системы.
009 3215 NOPROMPT # Второй телетайп для управления установкой.
00C 3505 # Ввод перфокарт.
00D 3525 $(MyDir)/IO/punch ascii crlf # Вывод перфокарт.
00E 1403 $(MyDir)/IO/printer crlf # Принтер.
020-02F 3270 # Графические терминалы.
Диски
130 3330 $(MyDir)/DASD/CPR6L0
131 3330 $(MyDir)/DASD/VMREL6
#
180-18F 3420 * # Ленточные накопители.
В окне с телнетом:
ENTER FORMAT OR ALLOCATE:FORMAT
FORMAT FUNCTION SELECTED
ENTER DEVICE ADDRESS (CCU):131
ENTER DEVICE TYPE:3330-11
ENTER START CYLINDER (XXX) OR "LABEL":000
ENTER END CYLINDER (XXX):807
ENTER DEVICE LABEL:VMREL6
FORMAT STARTED
FORMAT DONE
000 NO. PAGE RECORDS WITH READ-CHECK ERRORS
ENTER FORMAT OR ALLOCATE:ALLOC
ALLOCATE FUNCTION SELECTED
ENTER DEVICE ADDRESS (CCU):131
ENTER DEVICE TYPE:3330-11
ENTER DEVICE LABEL:VMREL6
ENTER ALLOCATION DATA FOR VOLUME VMREL6
TYPE CYL CYL
.... ... ...
PERM 000 012
DRCT 013 016
TEMP 017 201
PERM 202 202
TEMP 203 389
TDSK 390 402
PERM 403 807
END
ALLOCATION RESULTS
PERM 000 012
DRCT 013 016
TEMP 017 201
PERM 202 202
TEMP 203 389
TDSK 390 402
PERM 403 807
DEVICE 131 VOLUME VMREL6 ALLOCATION ENDED
ENTER FORMAT OR ALLOCATE:FORMAT
FORMAT FUNCTION SELECTED
ENTER DEVICE ADDRESS (CCU):130
ENTER DEVICE TYPE:3330
ENTER START CYLINDER (XXX) OR "LABEL":000
ENTER END CYLINDER (XXX):403
ENTER DEVICE LABEL:CPR6L0
FORMAT STARTED
FORMAT DONE
000 NO. PAGE RECORDS WITH READ-CHECK ERRORS
На дисплее появится следующая картинка:
В принципе, дисплей 3270 в исполнении CMS похож на обычную консоль. Единственное серьезное отличие - консоль не прокручивается автоматический, надо очищать экран кнопкой «Clear». Все остальное в принципе можно выяснить методом тыка.
ответы такие:
VM/370 STARTER SYSTEM RELEASE 6.0
ENTER PRINTER ADDRESS (CUU):
00e
ENTER DEVICE TYPE (1403,1443,3211,3203,3800):
1403
ENTER PUNCH ADDRESS (CUU):
00d
ENTER DEVICE TYPE (2540P,3525):
3525
ENTER READER ADDRESS (CUU):
00c
ENTER DEVICE TYPE (2501,2540R,3505):
3505
ENTER ADDRESS WHERE PID TAPE IS MOUNTED (CUU):
180
3420
ENTER ADDRESS WHERE SCRATCH TAPE IS MOUNTED (CUU):
181
ENTER DEVICE TYPE (2401,2415,2420,3420):
3420
===Нажмите клавишу Clear===
ENTER DEVICE ADDRESS WHERE SYSTEM RESIDENCE WILL BE BUILT (CUU):
131
ENTER DEVICE TYPE:
3330
===Повторение настроек===
ARE THE ABOVE SETTINGS CORRECT?
YES
===Экран очищается===
CHANGE TOD CLOCK (YES|NO):
13:36:14 NO
13:36:14 START ((COLD|WARM|CKPT|FORCE) (DRAIN))|(SHUTDOWN):
13:36:21 COLD
13:36:21 DMKLNK117E CPGEN 351 NOT LINKED; VOLID VMREL6 CONFLICT
13:36:21 DMKLNK117E CPGEN 352 NOT LINKED; VOLID VMREL6 CONFLICT
13:36:21 DMKLNK117E CPGEN 353 NOT LINKED; VOLID VMREL6 CONFLICT
13:36:21 AUTO LOGON *** CPGEN USERS = 001 BY SYSTEM
13:36:21
DMKCPI952I 0512K SYSTEM STORAGE
DMKCPI957I STOR 00512K, NUC 156K, DYN 00320K, TRA 008K, FREE 0028K, V=R 00000K
13:36:21 FILES: NO RDR, NO PRT, NO PUN
готовый вариант:
ID CPGEN:READ MYVM DIRECT
* CHANGE THE NEXT ENTRY FOR YOUR SYSTEM RESIDENCE DEVICE
DIRECTORY 131 3330 VMREL6
*
USER OPERATOR OPERATOR 320K 1M ABCDEG
ACCOUNT ACT1 OPERATOR
CONSOLE 009 3215
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
MDISK 191 3330 008 005 CPR6L0 WR READ WRITE
LINK MAINT 194 194 RR
LINK MAINT 190 190 RR
*
USER CE CE 320K 1M EFG
ACCOUNT ACT2 CE
CONSOLE 009 3215
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
MDISK 191 3330 013 004 CPR6L0 WR READ WRITE
LINK MAINT 194 194 RR
LINK MAINT 190 190 RR
*
USER MAINT CPCMS 720K 16M BCEG
ACCOUNT ACT3 MAINT
OPTION ECMODE REALTIMER
CONSOLE 009 3215
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
MDISK 190 3330 030 085 CPR6L0 MR READ
MDISK 191 3330 017 007 CPR6L0 WR READ
MDISK 194 3330 115 027 CPR6L0 MR READ
MDISK 199 3330 029 001 CPR6L0 WR READ
*
MDISK 300 3330 000 808 VMREL6 MW
*
* THE ABOVE ENTRY SHOULD BE MODIFIED TO MATCH THE ADDRESS AND LABEL
* OF YOUR SYSTEM RESIDENCE VOLUME. IT MAY THEN BE USED BY THIS ID
* TO LOAD A DIRECTORY AND WRITE A CP NUCLEUS.
* DELETE THE " * " (IN FRONT OF MDISK) ALSO.
* CHANGE THE "404" TO A "808" IF YOURS IS A 3330-11
*
*****
USER IVPM1 IVPASS 320K 16M G
ACCOUNT ACT4 IVPM1
CONSOLE 009 3210
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
MDISK 191 3330 001 001 CPR6L0 WR READ WRITE
LINK MAINT 194 194 RR
LINK MAINT 190 190 RR
*
USER IVPM2 IVPASS 320K 1M G
ACCOUNT ACT5 IVPM2
CONSOLE 009 3210
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
MDISK 191 3330 002 001 CPR6L0 WR READ WRITE
LINK MAINT 194 194 RR
LINK MAINT 190 190 RR
*
USER RSCS RSCS 512K
ACCOUNT ACT6 RSCS
OPTION ECMODE
CONSOLE 009 3215
SPOOL 001 2540 READER A
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
MDISK 191 3330 003 005 CPR6L0 WR READ WRITE
LINK MAINT 190 190 RR
DEDICATE 0B1 078
DEDICATE 0B2 079
DEDICATE 0B3 07A
*
USER ECMODE ECMODE 512K 1M G
ACCOUNT ACT7 ECMODE
OPTION ECMODE REALTIMER
CONSOLE 009 3215
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
MDISK 191 3330 024 005 CPR6L0 WR READ WRITE
LINK MAINT 194 194 RR
LINK MAINT 190 190 RR
*
USER OPERATNS OPERATNS 512K 1M BCEG
ACCOUNT ACT8 OPERATNS
CONSOLE 009 3215
SPOOL 00C 2540 READER A
SPOOL 00D 2540 PUNCH P
SPOOL 00E 1403 L
LINK MAINT 190 190 RR
****************
*
* THE FOLLOWING MINIDISK ENTRY IS PROVIDED AS AN EXAMPLE OF
* THE SPACE RECOMMENDED FOR AN IPCS VIRTUAL MACHINE.
* IF YOU INTEND TO USE THE OPERATNS USERID AS YOUR IPCS
* VIRTUAL MACHINE, YOU SHOULD CHANGE THE FOLLOWING STATEMENT
* TO ALLOCATE MINIDISK SPACE ON ONE OF YOUR SYSTEM DASD VOLUMES.
*
* MDISK 191 3330 XXX 015 YYYYYY WR READ WRITE
*
****************
*
*
* CYLINDERS 142 TO 403 ARE UNUSED AND MAY BE USED FOR
* ANY OTHER VIRTUAL MINI DISK SPACE. IT CAN ALSO BE
* USED FOR PAGING, SPOOLING OR T-DSK SPACE.
*
*
*
:READ DMKRIO ASSEMBLE
DMKRIO CSECT
******** Device definitions:
* ****** Teletype
RDEVICE ADDRESS=008,DEVTYPE=3215
* ****** Card reader
RDEVICE ADDRESS=00C,DEVTYPE=3505,CLASS=(R)
* ****** Card punch
RDEVICE ADDRESS=00D,DEVTYPE=3525,CLASS=(P)
* ****** Printer
RDEVICE ADDRESS=00E,DEVTYPE=1403,FEATURE=UNVCHSET,CLASS=(L)
* ****** Terminals
RDEVICE ADDRESS=(020,16),DEVTYPE=3277
* ****** DASDs:
* **** System disks.
RDEVICE ADDRESS=(130,2),DEVTYPE=3330,MODEL=11
* **** User disks.
RDEVICE ADDRESS=(150,8),DEVTYPE=3330,MODEL=11
* ****** Tapes.
RDEVICE ADDRESS=(180,16),DEVTYPE=3420,MODEL=8,FEATURE=DUALDENS
*
******** Control unit definitions:
* ****** Printer (I don"t know if this is requed):
RCTLUNIT ADDRESS=000,CUTYPE=3811
* ****** Slow IO:
RCTLUNIT ADDRESS=008,CUTYPE=2821
* ****** Terminals:
RCTLUNIT ADDRESS=020,CUTYPE=3272,FEATURE=16-DEVICE
* ****** System disks:
RCTLUNIT ADDRESS=130,CUTYPE=3880,FEATURE=16-DEVICE
* ****** User disks:
RCTLUNIT ADDRESS=150,CUTYPE=3880,FEATURE=16-DEVICE
* ****** Tapes:
RCTLUNIT ADDRESS=180,CUTYPE=3803,FEATURE=16-DEVICE
*
******** Channel definitions.
RCHANNEL ADDRESS=0,CHTYPE=MULTIPLEXOR
RCHANNEL ADDRESS=1,CHTYPE=BLKMPXR
*
RIOGEN CONS=008
END:READ DMKSYS ASSEMBLE
SYS TITLE "DMKSYS FOR 3330 RELEASE 6" 00001000
DMKSYS CSECT 00002000
SYSOWN (VMREL6,TEMP) 00003000
SYSRES SYSVOL=VMREL6,SYSRES=131,SYSTYPE=3330, X00004000
SYSNUC=7,SYSWRM=10,SYSERR=11,SYSCKP=202 00005000
SYSMON AUTO=NO 00006000
SYSJRL 00007000
SYSCOR RMSIZE=16M,AP=NO 00008000
SYSOPR SYSOPER=OPERATOR,SYSDUMP=OPERATNS 00009000
SYSTIME ZONE=5,LOC=WEST,ID=EST 00010000
SYSLOCS 00011000
END 00012000:READ DMKSNT ASSEMBLE
*. 00003000
* MODULE NAME - 00004000
* DMKSNT 00005000
* 00006000
* FUNCTION - 00007000
* 00008000
* THIS MODULE WILL BE ASSEMBLED BY THE INSTALLATION SYSTEM 00009000
* PROGRAMMER. IT WILL DESCRIBE THE THE SYSTEM TO BE SAVED VIA 00010000
* THE "SAVESYS" COMMAND AND TO BE IPL"ED BY NAME. SHARED SEG- 00011000
* MENTS MAY BE SPECIFIED. THESE SEGMENTS MUST CONSIST OF 00012000
* ALL REENTRANT CODE. 00013000
* 00014000
* 00015000
* INPUT TO THE NAMESYS MACRO IS SPECIFIED IN THE FOLLOWING 00016000
* FORMAT: 00017000
* 00018000
* LABEL NAMESYS SYSSIZE=NNNK,SYSNAME=CCCCCC,VSYSRES=CCCCCC, 00019000
* VSYSADR=XXX,SYSVOL=CCCCCC,SYSCYL=NNN, 00020000
* SYSSTRT=(CC,P),SYSPGCT=NN, 00021000
* SYSPGNM=(NN,NN,NN-NN,......), 00022000
* SYSHRSG=(N,N,...) 00023000
* 00024000
* WHERE: 00025000
* 00026000
* SYSSIZE - THIS IS THE MINUMUM STORAGE SIZE NEEDED TO 00027000
* OPERATE THE SAVED SYSTEM. 00028000
* SYSNAME - IS THE NAME GIVEN THE SYSTEM TO BE USED FOR 00029000
* IDENTIFICATION BY "SAVESYS" AND "IPL". 00030000
* VSYSRES - IS THE VOLUME SERIAL OF THE DASD CONTAINING THE 00031000
* SYSTEM TO BE SAVED 00032000
* VSYSADR - IS THE VIRTUAL ADDRESS OF THE DASD CONTAINING 00033000
* THE SYSTEM. 00034000
* SYSCYL - THE CYLINDER ADDRESS OF THE "MINI-DISK" 00035000
* FOR THE SYSTEM TO BE SAVED. 00036000
* SYSVOL - IS THE VOLUME SERIAL OF THE DASD DESIGNATED TO 00037000
* RECEIVE THE SAVED SYSTEM. THIS MUST BE A 00038000
* "CP-OWNED" VOLUME. 00039000
* SYSSTRT - THIS DESIGNATES THE STARTING CYLINDER AND PAGE 00040000
* ADDRESS ON "SYSVOL" THAT THIS NAMED SYSTEM IS TO 00041000
* BE SAVED. DURING THE SAVESYS AND IPL PROCESSING, 00042000
* THIS WILL BE USED TO MAKE UP THE "CCPD" ADDRESS 00043000
* FOR THE DASD OPERATIONS. THESE NUMBERS ARE TO 00044000
* SPECIFIED IN DECIMAL. 00045000
* SYSPGCT - IS THE TOTAL NUMBER OF PAGES TO BE SAVED. 00046000
* SYSPGNM - THESE ARE THE NUMBERS OF THE PAGES TO BE SAVED. 00047000
* SPECIFICATION MAY BE DONE AS GROUPS OF PAGES OR 00048000
* AS SINGLE PAGES. FOR EXAMPLE - IF PAGES 0,4, AND 00049000
* 10 THRU 13 ARE TO BE SAVED, USE THE FORMAT: 00050000
* SYSPGNM=(0,4,10-13). 00051000
* SYSHRSG - THESE ARE THE SEGMENT NUMBERS DESIGNATED AS 00052000
* SHARED. THE PAGES IN THESE SEGMENTS WILL BE SET 00053000
* UP AT IPL TIME TO BE USED BE ANY USER 00054000
* IPL"ING BY THIS NAME. 00055000
* 00056000
* THE FOLLOWING IS A SAMPLE OF INPUT FOR THIS MODULE: 00057000
* 00058000
* DMKSNTBL CSECT 00059000
* FSTNAME NAMESYS SYSSIZE=256K,SYSNAME=CMS,VSYSRES=CPDSK1, 00060000
* SYSVADR=190,SYSCYL=100,SYSVOL=CPDSK2, 00061000
* SYSSTRT=(400,1),SYSPGCT=10, 00062000
* SYSPGNM=(0-5,10-13),SYSHRSG=(1,2) 00063000
* 00064000
* ATTRIBUTES - 00065000
* 00066000
* PAGEABLE 00067000
* 00068000
* ENTRY POINTS - 00069000
* 00070000
* DMKSNTBL 00071000
* 00072000
* NOTES - 00073000
* 00074000
* THERE IS NO EXECUTABLE CODE IN THIS MODULE. 00075000
* 00076000
* 00077000
*. 00078000
EJECT 00079000
* 00080000
*********************************************************************** 00081000
* 00082000
* THE FOLLOWING ENTRIES ARE BASED ON THE INFORMATION INCLUDED 00083000
* IN THE SAMPLE DMKSYS PROVIDED WITH THE STARTER SYSTEM, 00084000
* AND THE SAMPLE ALLOCATIONS PROVIDED IN THE SYSTEM 00085000
* GENERATION PROCEDURE. 00086000
* 00087000
*********************************************************************** 00088000
* 00089000
SPACE 00090000
DMKSNTBL CSECT 00091000
SPACE 00092000
* 00093000
* THE SPACE FOR CMS IS ALLOCATED ON VMREL6, AS FOLLOWS: 00094000
* CYL 1, PAGE 01 TO CYL 1, PAGE 34 (34 PAGES) 00095000
* TOTAL = 34 PAGES 00096000
* 00097000
CMS NAMESYS SYSSIZE=256K,SYSNAME=CMS, X00098000
VSYSADR=190,SYSVOL=VMREL6,SYSCYL=030,SYSSTRT=(001,1), X00099000
SYSPGCT=33,SYSPGNM=(0-32),SYSHRSG=(1),VSYSRES=CPR6L0 00100000
EJECT 00101000
* 00102000
* THE SPACE FOR CMSSEG IS ALLOCATED ON VMREL6, AS FOLLOWS: 00103000
* CYL 1, PAGE 35 TO CYL 1, PAGE 51 (17 PAGES) 00104000
* TOTAL = 17 PAGES 00105000
* 00106000
CMSSEG NAMESYS SYSNAME=CMSSEG,SYSVOL=VMREL6,SYSCYL=, X00107000
SYSSTRT=(001,35),SYSPGCT=16,SYSHRSG=(16), X00108000
SYSPGNM=(256-271),SYSSIZE=64K,VSYSRES=,VSYSADR=IGNORE 00109000
EJECT 00110000
* 00111000
* THE SPACE FOR CMSVSAM IS ALLOCATED ON VMREL6, AS FOLLOWS: 00112000
* CYL 1, PAGE 52 TO CYL 1, PAGE 57 (6 PAGES) 00113000
* CYL 2, PAGE 01 TO CYL 2, PAGE 57 (57 PAGES) 00114000
* CYL 3, PAGE 01 TO CYL 3, PAGE 34 (34 PAGES) 00115000
* TOTAL = 97 PAGES 00116000
* 00117000
CMSVSAM NAMESYS SYSNAME=CMSVSAM,SYSVOL=VMREL6,SYSPGNM=(272-367), X00118000
SYSSTRT=(001,52),SYSPGCT=96,SYSSIZE=384K,SYSCYL=, X00119000
SYSHRSG=(17,18,19,20,21),VSYSRES=,VSYSADR=IGNORE 00120000
EJECT 00121000
* 00122000
* THE SPACE FOR CMSAMS IS ALLOCATED ON VMREL6, AS FOLLOWS: 00123000
* CYL 3, PAGE 35 TO CYL 3, PAGE 57 (23 PAGES) 00124000
* CYL 4, PAGE 01 TO CYL 4, PAGE 57 (57 PAGES) 00125000
* CYL 5, PAGE 01 TO CYL 5, PAGE 49 (49 PAGES) 00126000
* TOTAL = 129 PAGES 00127000
* 00128000
CMSAMS NAMESYS SYSNAME=CMSAMS,SYSVOL=VMREL6,SYSPGNM=(368-495), X00129000
SYSSTRT=(003,35),SYSPGCT=128,SYSSIZE=448K,SYSCYL=, X00130000
SYSHRSG=(23,24,25,26,27,28),VSYSRES=,VSYSADR=IGNORE 00131000
EJECT 00132000
* 00133000
* THE SPACE FOR CMSDOS IS ALLOCATED ON VMREL6, AS FOLLOWS: 00134000
* CYL 5, PAGE 50 TO CYL 5, PAGE 57 (8 PAGES) 00135000
* CYL 6, PAGE 01 TO CYL 6, PAGE 01 (1 PAGE) 00136000
* TOTAL = 9 PAGES 00137000
* 00138000
CMSDOS NAMESYS SYSNAME=CMSDOS,SYSVOL=VMREL6,SYSHRSG=(31), X00139000
SYSSTRT=(005,050),SYSPGCT=8,SYSSIZE=32K,SYSCYL=, X00140000
SYSPGNM=(496-503),VSYSRES=,VSYSADR=IGNORE 00141000
EJECT 00142000
* 00143000
* THE SPACE FOR INSTVSAM IS ALLOCATED ON VMREL6, AS FOLLOWS: 00144000
* CYL 6, PAGE 02 TO CYL 6, PAGE 10 (9 PAGES) 00145000
* TOTAL = 9 PAGES 00146000
* 00147000
INSTVSAM NAMESYS SYSNAME=INSTVSAM,SYSVOL=VMREL6,SYSHRSG=(254), X00148000
SYSSTRT=(006,002),SYSPGCT=8,SYSSIZE=32K,SYSCYL=, X00149000
SYSPGNM=(4064-4071),VSYSRES=,VSYSADR=IGNORE 00150000
* 00151000
EJECT 00152000
* 00153000
* THE SPACE FOR 3800 PRINTER IMAGES ON VMREL6 IS ALLOCATED: 00154000
* CYL 6, PAGE 11 TO CYL 6, PAGE 16 (6 PAGES) 00155000
* TOTAL = 6 PAGES 00156000
* 00157000
NAME3800 CPNAME=IMAG3800,SYSVOL=CPR6L0,SYSSTRT=(006,11), X00158000
SYSPGCT=5 00159000
EJECT 00160000
* 00161000
* THE FOLLOWING SPACE IS AVAILABLE FOR SAVED SYSTEMS ON VMREL6: 00162000
* CYL 6, PAGE 17 TO CYL 6, PAGE 57 (41 PAGES) 00163000
* TOTAL = 47 PAGES 00164000
* 00165000
END 00166000
Теперь в консоли администратора:
vmfplc2 rew
R; T=0.01/0.01 14:33:26vmfplc2 load
LOADING.....
5749010 061638 A1
VMSERV EXEC A1
5749010 EXEC A1
VMFPLC2 MODULE A2
END-OF-FILE OR END-OF-TAPE
R; T=0.02/0.10 14:33:33
access 191 c
"191 A " RELEASED
R; T=0.01/0.01 14:34:16
vmserv restart 5749010 cp nomemo
Дальше будет много вопросов. Лично я отвечаю наугад - в результате, как и следовало ожидать, ошибка. Но это не критично.
Поздравляю, теперь у вас есть своя CP/CMS система. Чтобы выключить ее, введите в консоли оператора команду shutdown. Когда будете запускать ее снова, выберите warm start.
PS: Вообще-то, еще много что можно рассказать. Но и так уже простыня получилась.
Удачных вам IPL-ов!
PS: кто попробовал установить и не лень отписаться - отпишитесь, пожалуйста.