Генерация RT-11 5.7

для dvk-fpga

Posted by Unik on 04.09.2021

Тут я опишу как собрал последнюю версию RT-11 для dvk-fpga. Так как оригинальный дистрибутив находится на ленте, а в проекте dvk-fpga ленточного устройства нет, то придется использовать эмулятор SIMH чтобы перенести его в систему.

Самым подходящим устройсвом для переноса будет несколько дисков RK: так как к нему есть драйверы от DEC и он есть и в эмуляторе и в проекте dvk-fpga или можно использовать DM: только с него нет загрузки в пульте. Потом уже можно будет перенести систему куда угодно. Очень помогла инструкция от Andrey_Ak.

В SIMH использовал такой конфиг, предварительно получив образ диска с помощью sd-extract:

SET CPU 11/23 256K
SET RK0 WRITEENABLED
ATTACH RK0 RK0-rt57fpga-1.dsk
SET RK1 WRITEENABLED
ATTACH RK1 RK1-rt57fpga-2.dsk
ATTACH TQ0 rt57mu.tap
boot tq0

Подробно процесс копирования можно посмотреть в этом логе.

Перед генерацией системы лучше заранее решить какие устройства понадобятся:

Монитор SB и FB т.к. всего 64КБ ОЗУ
Линии DL11(ИРПС) - 2шт на адресах 177560 и 176500
Диски:
RK, DM, DX,
MY и DW - для них нет драйвера в дистрибутиве, их нужно собрать отдельно
Прочее:
LD, LS, XL, NL

Пишем полученные образы на SD карту:

sudo ./sd-store /dev/sda RK 3 0 RK0-rt57fpga-1.dsk
sudo ./sd-store /dev/sda RK 4 0 RK1-rt57fpga-2.dsk

Через пульт загрузится с RK3 не получилось, поэтому загружаемся с RK0, затем "BOOT RK3:" и запускаем SYSGEN:

.IND SYSGEN
Do you want to use a previously created answer file (N)? 
Do you want to create an answer file (N)? Y
What answer file do you want to create (SYSGEN.ANS)?

5.    Do you want the single-background (SB) monitor (Y)?
10.   Do you want the foreground/background (FB) monitor (Y)?
15.   Do you want the extended memory (XM) monitor (N)?
20.   Do you want the extended background (XB) monitor (N)?
25.   Do you want the Supervisor and I-D (ZM) monitor (N)?
30.   Do you want the Supervisor and I-D background (ZB) monitor (N)?
35. Do you want timer support in the SB monitor (N)? Y
40. Do you want device time-out support (N)?
45. Do you want an error message on system I/O errors (Y)?
50. Do you want system job support (N)? Y
55. Do you want to use the .SPCPS request (N)? Y
60. Do you want global SCCA support (N)? Y
65. Do you want multiterminal support (N)? Y
70. Do you want asynchronous terminal status (Y)?
75. Do you want multiterminal time-out support (Y)? N
76. Do you want multiterminal handler hooks support (N) ? Y
80. Enter the size of the output buffers (40): 
85. Enter the size of the input buffers (134):
95. Do you want end of month and year date rollover (N)? Y
100. Do you want the user command linkage (Y)?
105. Do you want high speed ring buffer support (N)? Y
110. Do you want all the keyboard monitor commands (Y)?
115. Do you want the optional 50 Hz clock support (N)? Y
120. Do you want to use the KW11-P clock as the system clock (N)?
125. Do you want the startup indirect file (Y)?
130. Do you want floating point support (N)? Y
135. Do you want memory parity support (N)? Y
140. Do you want power failure messages (N)? Y
145. Do you want BATCH support (N)? Y
150. Do you want error logging (N)?
170. Do you want extended device-unit support (N)? Y
175. Do you want device ownership support (Y)?
180. Do you want the message handler resident in the monitor (Y)?
185. Do you want to define any other system conditionals (N)?

Enter the device name you want support for [dd]: DX
200.  Do you want support for a second RX01 controller (N)? Y
210.  What is the CSR  address for the first RX01 (177170)?
215.  What is the vector address for the first RX01 (264)?
210.  What is the CSR  address for the second RX01 (177174)?
215.  What is the vector address for the second RX01 (270)?

Enter the next device name [dd]: RK
Enter the next device name [dd]: DM
Enter the next device name [dd]: LD
250.  Do you want extended device-unit support for handler LD (Y)?
255.  How many device-units should LD support (16)?

Enter the next device name [dd]: NL
Enter the next device name [dd]: XL
325.  What is the CSR address for XL (176500)?
330.  What is the vector address for XL (300)?
331.  Do you want XL to use the multiterminal hooks feature (N) ?

Enter the next device name [dd]: LS
295. Do you want support for the PC300 printer port (N)?
300.  What is the CSR for the serial line printer (176500)?
305.  What is the vector for serial line printer (300)?
306.  Do you want LS to use the multiterminal hooks feature (N) ?

Enter the next device name [dd]: .
Do you want to add support for any of your own devices (N)?

355. How many extra device slots do you want (0)? 8
360. Support for how many local DL11 lines, including the console (1) ? 2
365. How many remote DL11 lines are to be supported (0)?
370. What is the CSR for the first (console) DL11 (177560)?
375. What is the vector for the first (console) DL11 (60)?
370. What is the CSR for the next (local) DL11 (176500)?
375. What is the vector for the next (local) DL11 (300)?
380. Do you want DZ series multiplexor support (N)?
420. Do you want DH series multiplexor support (N)?

Do you want to change any of your responses (N)?
What is the name of the source input device [xxn] (RK1)? RK4
What is the name of the binary output device [xxn] (RK0)? RK3
What is the name of the map output device [xxn] (RK0)? RK3
Do you want to retain the system OBJs (Y)? N
Do you want to retain the work files (Y)?

.SQ RK3:
RK1:/Squeeze; Are you sure? Y
.SQ RK4:
RK1:/Squeeze; Are you sure? Y

.COP RK3:SYSGEN.CND RK4:
.COP RK3:SYSGEN.TBL RK4:
.$@SYSGEN.BLD

Пойдёт сборка системы, занимает примерно 8-10мин. Переименовываем собранные драйвера, копируем новый монитор и загружаемся:

.REN RK3:*.SYG .SYS
.COP/BOO:RK RK3:RT11SB.SYS RK3:
.BOOT RK3:

Дальше нужно разобраться с драйверами MY и DW. Драйвер MY я не стал собирать сам, а взял с образа диска RT-11 5.07 из "Эмулятор ДВК" и он подошёл, а вот с драйвером DW будет посложнее. Полный драйвер который использовал forth32 для разбивки диска можно взять здесь. И чтобы заново не переразбивать диск и сохранить на нем данные, нужно использовать этот драйвер, который нужно ещё собрать из исходников и задать параметры.

Для сборки, исходники драйвера DW положить на диск с системой и выполнить:

.MAC SYSGEN.CND+USRMLB.MAC+DWCND.MAC+DW.MAC/OB
.LIN/EXE:RK3:DW.SYS/NOBI DW

Драйвер соберется и для настройки есть команда "SET DW PART" - но она не сохраняет параметры в драйвер, возможно потому что не может обновить таблицу разделов в загрузчике. Выдаёт ошибку "?DW-F-Unable to update DW handler". В общем с этим драйвером ничего не получилось. Так как есть 8 дисков RK07(DM:), то не особо то этот DW: и нужен. Скорее всего если собрать систему с поддержкой Error logging и Device time-out, ответив "Y" на вопрос 40, 75, 150, то можно будет скопировать драйвер с RK0: и наверно он подойдёт, но пока лень проверять :)

Вот так выглядит таблица разделов DW: если загрузится с RK0: