PDA

Просмотр полной версии : Практическое программирование в среде RT-11 на ассемблере.



Страницы : [1] 2

MM
19.06.2015, 23:07
Приглашаю Гуру кодов и строк попрактиковаться в программировании под RT-11 в MACRO.SAV .

Например, имеется задача написать малогабаритный фрагмент , реализующий функцию записи на диск участка ОЗУ с адреса 020000 до адреса 040000. При запуске процесса должно запрашиваться имя файла, а по завершению проводится диагностика возможных ошибок - например, нет места на диске, аппаратный сбой и т.п.

Прошу приводить примеры кода.:v2_dizzy_coder:

Patron
20.06.2015, 00:12
функцию записи на диск участка ОЗУ с адреса 020000 до адреса 040000Команда



SAVE XXX.BIN 20000-40000


запишет в файл XXX.BIN содержимое ОЗУ с адреса 0 по адрес 40000 ( пишет всегда с адреса 0 ).

Если хочется иметь обязательно файл с 20000 по 40000 - надо дать следующие команды:



SAVE XXX.BIN 0-40000
DEL XXX.BIN
CREA 000.BIN/ALL:16.
CREA XXX.BIN/ALL:16.
DEL 000.BIN

MM
20.06.2015, 00:15
Имеется в виду ввод-вывод по макрокомандам из текста программы. Если совсем проще - посредством ЕМТ команд.

hobot
20.06.2015, 15:47
Patron, интересно GET после перезагрузки сработает или всё повиснет )

Patron
20.06.2015, 21:38
интересно GET после перезагрузки сработает или всё повиснетGET = RUN - START
RUN = GET + START



.GET DAY

.START
Время Дата
21:38:04 20-Июн-2015, Суббота

.

MM
21.06.2015, 00:06
Надеюсь, описания макрокоманд ассемблера RT-11 у общественности имеются ?
Если нет - могу сфоткать толстенькую брошурку.

Patron
21.06.2015, 01:15
описания макрокоманд ассемблера RT-11Системные таблицы и библиотеки (http://archive.pdp-11.org.ru/BIBLIOTEKA/DVKTXT/RAFOS_II/)

MM
21.06.2015, 03:45
Да, все знакомые книжечки.
Они же комплектовались к БК0011 без М.

Однако, некотрые сомнения имеются в достоверности материала :
http://storage3.static.itmages.ru/i/15/0621/h_1434847334_5095445_0a16cf3e94.jpg (http://itmages.ru/image/view/2660638/0a16cf3e)

Кто первый найдет клюкву, получит пирожок. Только самовывоз - почта исключена. :v2_dizzy_fisher:

hobot
21.06.2015, 15:33
описания макрокоманд ассемблера RT-11
Есть ещё вот такое пособие (и в архиве и на форуме)
описание системной макро-библиотеки SYSMAC.SML
> http://zx-pk.ru/showpost.php?p=558147&postcount=8 - в теме
по ПАСКАЛЮ \ МАКРО-11.

Korchagin
26.11.2016, 22:07
Хоть и древняя тема, но руки зачесались изваять.
Задумка ММ, на мой взгляд, выглядела примерно так.

.TITLE SAVEMEM.MAC
.MCALL .PRINT, .EXIT, .ENTER,
.MCALL .CLOSE, .WRITW, .CSISPC ;используемые вызовы библиотеки

START:

.CSISPC #FNAME, #FEXT ;ввод имени и расширения файла
MOV #AREA, R5
.ENTER R5, #1, #FNAME+36, #20 ;откроем файл с усеченным до 8 байт именем и размером 16 блоков по 256 слов
BCS 2$ ;ошибка открытия файла
.WRITW R5, #1, 20000, #10000 ;пишем в канал 1 4096 слов, начиная с адреса 20000
BCS 3$ ;ошибка записи
.CLOSE #1 ;закрываем канал, создается постоянный дисковый файл
MOV #SUCCESS, R0 ;сообщение об успехе
1$:
.PRINT ;печать сообщения с адресом в R0
.EXIT ;выход
2$:
MOV #EERR, R0 ;не открылся
BR 1$
3$:
MOV #WERR, R0 ;не удалось записать
BR 1$

SUCCESS: .ASCIZ /SUCCESS/
EERR: .ASCIZ /CAN'T OPEN FILE FOR OUTPUT/
WERR: .ASCIZ /CAN'T WRITE FILE/
FNAME: .BLKW 40 ;у функции ввода строки буфер 80 байт
FEXT: .RAD50 /BIN/
AREA: .BLKW 5 ;аргументы для EMT

.END START

hobot
26.11.2016, 22:45
Если нет - могу сфоткать толстенькую брошурку.
А какую именно брошюру вы упоминали ?

- - - Добавлено - - -

Korchagin, может всё таки тэг сменить на [code],
что бы некий стандарт форматирования применять
к макро-11 исходникам? )

form
26.11.2016, 23:08
Хоть и древняя тема, но руки зачесались изваять.
Вот еще бы код сюда помещался в читабельном виде, а не в перекособоченном ;)

Korchagin
26.11.2016, 23:33
Не, текст не форматируется по нормальному. И в эмуле ДВК не пашет, кстати. Ошибку записи выдает.

- - - Добавлено - - -

А вопрос для меня тоже интересный - ПЗУху РФ3 с адресом 140000 вычитать треба, вставив ее в панельку МC1201.02, и в файл закинуть содержимое.

Alex_K
27.11.2016, 00:26
А вопрос для меня тоже интересный - ПЗУху РФ3 с адресом 140000 вычитать треба, вставив ее в панельку МC1201.02, и в файл закинуть содержимое.


.TITLE RDROM
.IDENT /V01.00/
.MCALL .ENTER,.WRITW,.CLOSE,.PURGE,.PRINT,.EXIT
START: .ENTER #AREA,#0,#FILNAM,#16.,#0
BCC 1$
.PRINT #ERRENT
BR 3$
1$: .WRITW #AREA,#0,#140000,#10000,#0,#0
BCC 2$
.PURGE #0
.PRINT #ERRWRI
BR 3$
2$: .CLOSE #0
3$: .EXIT


AREA: .BLKW 5
FILNAM: .RAD50 /DK 140000ROM/
ERRENT: .ASCIZ /?RDROM-F-.ENTER error/
ERRWRI: .ASCIZ /?RDROM-F-.WRITW error/
.END START

form
27.11.2016, 00:35
.WRITW #AREA,#0,#140000,#10000,#0,#0
Только стоит отметить, что это будет работать только в SJ мониторе и ни в каком другом...

Alex_K
27.11.2016, 00:37
Только стоит отметить, что это будет работать только в SJ мониторе и ни в каком другом...
Неужто и в FB-мониторе не будет работать?

form
27.11.2016, 00:41
Неужто и в FB-мониторе не будет работать?
Даже в SB не будет (впрочем это по сути и есть однозадачный FB). Там выполняется проверка адреса буфера - он не может быть выше программной области.

Alex_K
27.11.2016, 00:54
Даже в SB не будет (впрочем это по сути и есть однозадачный FB). Там выполняется проверка адреса буфера - он не может быть выше программной области.
Ну можно немного модернизировать:


.TITLE RDROM
.IDENT /V01.00/
.MCALL .SETTO,.ENTER,.WRITW,.CLOSE,.PURGE,.PRINT,.EXIT
START: .SETTO #BUFFER+20000
CMP R0,#BUFFER+20000
BHIS 1$
.PRINT #NOMEM
.EXIT
1$: MOV #BUFFER,R0
MOV #140000,R1
MOV #10000,R2
2$: MOV (R1)+,(R0)+
SOB R2,2$
.ENTER #AREA,#0,#FILNAM,#16.,#0
BCC 3$
.PRINT #ERRENT
BR 5$
3$: .WRITW #AREA,#0,#BUFFER,#10000,#0,#0
BCC 4$
.PURGE #0
.PRINT #ERRWRI
BR 5$
4$: .CLOSE #0
5$: .EXIT

AREA: .BLKW 5
FILNAM: .RAD50 /DK 140000ROM/
NOMEM: .ASCIZ /?RDROM-F-Insufficient memory/
ERRENT: .ASCIZ /?RDROM-F-.ENTER error/
ERRWRI: .ASCIZ /?RDROM-F-.WRITW error/
.EVEN
BUFFER:
.END START

form
27.11.2016, 01:03
Ну можно немного модернизировать
Тллко аргумент остался #140000 :)

Alex_K
27.11.2016, 01:04
Тллко аргумент остался #140000 :)
Пока писали ответ, я уже успел поправить.

form
27.11.2016, 01:07
Ну и совсем для красоты можно .FETCH сделать сначала ибо DK может быть каким-нибудь LD который часто не загружают.

Alex_K
27.11.2016, 01:15
Ну и совсем для красоты можно .FETCH сделать сначала ибо DK может быть каким-нибудь LD который часто не загружают.
Ну тогда программу уже сильно усложним, для начинающих много сложностей, легче вместо DK поставить SY, уж он то всегда загружен. А так и .DSTAT надо вызывать для определения загружен ли драйвер и его размер, плюс ещё место для него, потом .FETCH вызывать при необходимости.

form
27.11.2016, 01:22
.DSTAT надо вызывать для определения загружен ли драйвер и его размер
Зачем? .FETCH отлично вызывается поверх загруженного драйвера - просто будет как ноп. Размер тоже не нужен - после выполнения .FETCH в R0 вернется первый свободный адрес после драйвера (если драйвер до этого был загружен - вернется адрес буфера который был указан в .FETCH).

Alex_K
27.11.2016, 01:27
Размер тоже не нужен - после выполнения .FETCH в R0 вернется первый свободный адрес после драйвера
А если памяти не хватит?

form
27.11.2016, 01:31
А если памяти не хватит?
Тогда .FETCH вернет ошибку которую программа может отработать.

Alex_K
27.11.2016, 01:34
Тогда .FETCH вернет ошибку которую программа может отработать.
Ну чтобы это было, то тогда программе после запуска придется хватать всю свободную памятm, а драйвер грузить с адреса BUFFER+20000.

form
27.11.2016, 01:47
Ну чтобы это было, то тогда программе после запуска придется хватать всю свободную памятm, а драйвер грузить с адреса BUFFER+20000.
Хватать всю память не надо - .FETCH можно натравливать на то, что за пределами топа программы. Соответственно можно либо заранее запросить память для буфера, а потом FETCH натравить на +20000 к нему, либо сделать .FETCH, а потом запросить R0+20000

- - - Добавлено - - -

Ну и в общем случае, в качестве начала буферов и тому подобного лучше использовать не метку в конце программы, а значение из @#50 или директивы .LIMIT - тогда программа будет по прежнему работать даже если из нее вызвать подпрограмму какую-нибудь библиотечную :)

Korchagin
27.11.2016, 01:53
А если для сокращения размеров занимаемой прогой памяти читать из памяти и записывать в файл по одному блоку? Буфер уменьшается в 16 раз, а порядка 7 килобайт оперативы не лишние.

Alex_K
27.11.2016, 01:59
Ну и в общем случае, в качестве начала буферов и тому подобного лучше использовать не метку в конце программы, а значение из @#50 или директивы .LIMIT - тогда программа будет по прежнему работать даже если из нее вызвать подпрограмму какую-нибудь библиотечную
Здесь ничего библиотечного не вызывается, потому и так можно. Да и вопрос был про сохранение ПЗУ с адреса 140000, а для этой цели и .FETCH необязательно вызывать, можно и самому, если понадобится и с помощью LOAD загрузить. А так программа обрастёт кучей ненужных функций. Может для начинающего программиста это и нужно, чтобы изучить все макровызовы, но для такой программы это лишнее.
Да и к значению из @#50 надо вроде прибавить 2.

- - - Добавлено - - -


Буфер уменьшается в 16 раз, а порядка 7 килобайт оперативы не лишние.
Да вроде на МС1201.02 даже при включенном ПЗУ с адреса 140000 остаётся ещё 40 КБайт ОЗУ. Как же его так можно загрузить, что и 9 КБайт не будет хватать?

Korchagin
27.11.2016, 02:22
56 килобайт всего в наличии, из которых 8 килобайт поставленное ПЗУ - итого 48 всего-то остается. Сколько ест операционка, не знаю, но если прога 10 килобайт, то для операционки с дровами остается 38.

form
27.11.2016, 06:50
Здесь ничего библиотечного не вызывается, потому и так можно.
В данном случае да, просто иной раз потом программа дорабатывается и долго ищется глюк - проще сразу универсально делать :)


Да и к значению из @#50 надо вроде прибавить 2.
Да, надо.

form
02.12.2016, 18:56
Вот такая маленькая фича на заметку. Привычная конструкция разборок с битом C:
TST (PC)+ ;ОЧИСТКА C
100$: SEC ;УСТАНОВКА C
RETURN ;ВЫХОД


А это вариант конструкции при которой (например из-за нехватки регистров) на вершине стека делаются некие вычисления которые в случае успеха применяются, а в случае ошибки нужно извлекать перед выходом:
ADD (SP)+,VAR ;ПРИМЕНЕНИЕ РЕЗУЛЬТАТА
TST (PC)+ ;ОЧИСТКА C
100$: COM (SP)+ ;УСТАНОВКА C
RETURN

hobot
02.12.2016, 22:34
TST (PC)+ ;ОЧИСТКА C
Извини я не совсем понимаю как сравнение с 0 = очистке ты 0 туда не пишешь ты просто сравниваешь
и после этого даже ветвления никакого нет (
разве очистка это не три строки минимум?
1.сравнение
2.beq куда то
3. CLR - очистка непосредственно ???

Eats
02.12.2016, 23:01
Извини я не совсем понимаю Там нечего особенно понимать. (РС)+ это 27-я адресация, в общем случае автоинкрементная, но для счётчика команд имеющая особое название непосредственная. При ней проц тестирует (то есть устанавливает флаги N и Z, а V и С всегда сбрасывает) слово непосредственно за командой, увеличивая заданный регистр - в данном случае счётчик команд. Программистская фишка здесь в том, что тестируемое слово является операндом для операции по адресу .=100$-2 (там лежит TST #261, которая всегда сбрасывает С), но операцией по адресу .=100$, которая всегда устанавливает С. Точно так же, кстати, она могла бы устанавливать и V, если бы там было SEV. И точно так же она могла бы устанавливать Z, если бы там было SEZ. И 4-й раз точно так же она могла бы устанавливать N, если бы там было SEN. Но в RT11 принято передавать флаг ошибки в С, а приведённые две строчки - это классика жанра.

Titus
02.12.2016, 23:31
Я не понял смысла этого - зачем после очистки C его опять устанавливать?

Eats
02.12.2016, 23:35
Однако, некотрые сомнения имеются в достоверности материалаУправлявшая система не понравилась? Ну так сколько лет уже прошло! Нынче она давно уже не управляющая... Да и кто из нас застрахован от очепяток?! :)

Alex_K
02.12.2016, 23:36
Я не понял смысла этого - зачем после очистки C его опять устанавливать?
А он не устанавливается. Получается команда TST #261. Т.е. если произошла ошибка, то переходим на метку 100$, и исполняем SEC и RETURN. А если ошибок нет, то исполняем TST #261 и RETURN.

Titus
03.12.2016, 00:59
А он не устанавливается. Получается команда TST #261. Т.е. если произошла ошибка, то переходим на метку 100$, и исполняем SEC и RETURN. А если ошибок нет, то исполняем TST #261 и RETURN.
Ааа) PC же перескакивает команду SEC автоинкрементом)
Ну, PDP-шники, вы извращенцы) А такие методы адресации этому лишь способствуют)

kolk
03.12.2016, 01:06
Ну, PDP-шники, вы извращенцы) А такие методы адресации этому лишь способствуют)

А думанье в командах "пропустить, если" (условные команды позволяют только пропустить следующую) и "отложенный переход" (следующая команда после команды перехода выполняется до перехода) привычно? ;)

Titus
03.12.2016, 01:22
"отложенный переход" (следующая команда после команды перехода выполняется до перехода) привычно? ;)
Вот этого я не встречал. В каком это ассемблере?

kolk
03.12.2016, 02:01
В MIPS 20-летней и более давности, например. Борьба со сбросом конвеера при переходе.

form
03.12.2016, 22:17
А думанье в командах "пропустить, если" (условные команды позволяют только пропустить следующую) и "отложенный переход" (следующая команда после команды перехода выполняется до перехода) привычно?
Да нет, привычнее когда с одним регистром можно только вот так поступать, с другим эдак, а на третий - табу - его нельзя трогать, ну а память-память в одной операции - ни-ни! ;)
Ну а уж чтобы один и тот же код имел разный функционал - это вообще святое! :D

AFZ
05.12.2016, 10:46
Ааа) PC же перескакивает команду SEC автоинкрементом)
Ну, PDP-шники, вы извращенцы) А такие методы адресации этому лишь способствуют) Для понятности можно написать по=другому


TST #261
ERRXIT = .-2
RTS PC (ERRor eXIT - выход по ошибке, временная метка тут как-то не очень, если не делать .ENABLE LSB, то она почти наверняка окажется недоступной, ибо стандартная область действия временных меток - между двумя постоянными.)

- - - Добавлено - - -

А вот прием для обслуживания кучи одинаковых устройств. Пример - несколько терминалов, подключенных через обычные ВП1-065, допустим, на плате КТЛК-6. Программу обслуживания их прерываний (код), обычно, пользуют одну и ту же, а переменные данные (кольцевые буферы и текущие адреса в них, всякие счетчики, флажки и пр.) располагают в таблице, для каждого терминала - своей. В этом случае программа обслуживания конкретного прерывания от терминала должна поместить в какой-то заданный регистр адрес этой таблицы, перед этим сохранив его, и уйти на общую программу обслуживания прерывания от терминалов. Так вот, можно воспользоваться следующим приемом, допустим, адрес таблицы нужен в R0 (подсмотрено в ядре ДИАМСа.):


INTn: JSR R0,@(PC)+ ; смещение -4 от начала таблицы. Команда.
.WORD TRMINT ; Смещение -2 от начала таблицы. Адрес общей программы обслуживания
; прерываний от терминала.
nTABLE: ; Собственно таблица, ее начало
.........
Вектора же заполняем указателями на команду JSR R0,@(PC)+, то есть на смещение -4 от начала таблицы, каждому терминалу - своей. Таким образом, прерывание от терминала этой командой сохранит R0 в стеке, поместит в этот R0 адрес начала таблицы и уйдет на общую программу обслуживания терминалов.

Обычно эти таблицы генерятся динамически в занятом для них куске свободной памяти при запуске программы. При этом сначала берут адрес этого участка памяти для таблицы, записывают его в вектор конкретного терминала, потом в память по этому адресу пересылают с автоинкрементом сначала код 4037 (тот самый JSR), затем адрес программы обслуживания терминалов, получившийся после этих двух пересылок адрес сохраняем в качестве адреса начала таблицы для этого терминала, после чего генерим собственно таблицу в ее начальном состоянии.

Итого, накладные расходы на занесение в R0 адреса таблицы конкретного терминала и переход к общей программе обслуживания всего два слова (4 байта) на каждый терминал.

Eats
05.12.2016, 15:22
Ну что, вроде ожили? Чего было-то? Форум в воскресенье висел или лежал?


Ааа) PC же перескакивает команду SEC автоинкрементом)
Ну, PDP-шники, вы извращенцы) А такие методы адресации этому лишь способствуют)Пардон, месье, я вижу — Вы в нашем деле новичок и ещё не успели познать всю радость извращений! :) А что Вы скажете на пару_строк кода 8080?:

error EQU noerror+1
noerror: CPI 37h
RET
Как Вы думаете, куда будет передано управление по метке error и какой такой метод адресации использован в команде по метке noerror?
Правда, у 80-го процессора есть однобайтные команды условного возврата из подпрограмм, так что ему будет дешевле написать условный возврат, нежели вышеприведённый код. А с вызовом подпрограмм уже не так: у 11-го процессора вызов занимает 4 байта, а у 8080 — три, что, казалось бы, даёт ему экономию кода в 25%. Но!!! Вы верно заметили про "такие методы адресации"! В 11-м процессоре есть такие методы адресации, которые требуют при вызове подпрограммы всего 2-х байтов кода, так что при их использовании 8080 уже отстаёт по краткости кода, причём на 33%. Однако и это не всё!
Практическая польза при программировании в среде RT-11 на ассемблере заключается в возможности вызовов подпрограмм вообще без команд вызова подпрограмм, а просто по именам! Вот пример такого кода, который типа печатает на экране результат А*В+D/F:

F_MUL А, В, С ; вызов подпрограммы умножения А и В с занесением результата в С
F_DIV D, E, F ; вызов подпрограммы деления D на E с занесением результата в F
F_ADD C, F, G ; вызов подпрограммы сложения C и F с занесением результата в G
F_TYPE G ; вызов подпрограммы печати G на экране
Где-то поодаль находятся коды подпрограмм F_MUL, F_DIV, F_ADD (она же F_SUB) и F_TYPE, а также переменные.
Программистская фишка здесь заключается в настройке регистра (например, R4) на начало такого блока "данных" и завершении каждой из подпрограмм командой не RET, a JMP @(R4)+, так что указанный регистр выполняет функцию как бы счётчика команд, если считать F_MUL (и прочие) командами, а не именами подпрограмм. Но поскольку и эти "команды", и данные к ним находятся вперемежку, то этот же регистр выполняет функцию и как бы указателя стека, только растущего не вниз, а вверх, как и счётчик команд. Как Вам, месье, понравится такое извращение?
На самом деле я всего лишь привёл упрощённый пример куска фортрановского кода от RT11, который, впрочем, без упрощений не стеснялся применять и в своих ассемблерных программах. Понятно, что в вычислительных задачах количество вызовов наиболее ходовых подпрограмм (+, -, * и /, а также присвоения и преобразования данных) столь велико, что экономия по одному слову памяти на каждый вызов, а, главное, экономия времени от неиспользования обычного стека (как это было бы при обычных вызовах CALL) получается весьма заметной.

form
05.12.2016, 15:35
у 11-го процессора вызов занимает 4 байта
Ну не всегда - зависит от того как вызывать :)

- - - Добавлено - - -


как вызывать
Кстати, повторюсь - где-то уже писал, но напомнить фичу не помешает :)
JSR R0,@PC
JSR R1,@PC
JSR R2,@PC
...
Правильно, это сохранение регистров в стеке, при том не меняя C,V,Z,N в PSW :)

Titus
05.12.2016, 15:43
Пардон, месье, я вижу — Вы в нашем деле новичок и ещё не успели познать всю радость извращений! А что Вы скажете на пару_строк кода 8080?:
Код:

error EQU noerror+1
noerror: CPI 37h
RET

Как Вы думаете, куда будет передано управление по метке error и какой такой метод адресации использован в команде по метке noerror?

Не спрашивайте меня такие сложные вопросы)

form
05.12.2016, 15:58
сложные вопросы
Сложные вопросы можно даже в RT-11 организовать :)
.TY TEST.MAC
.TITLE TEST
.MCALL .EXIT,.PRINT

.PSECT CODE,I
TEXT: .ASCIZ /I=D/ ;XXX EVEN

START: .PRINT #TEXT ;PRINT
.EXIT ;EXIT

.PSECT DATA,D
.ASCIZ /I<>D/

.END START


.MAC TEST

.LIN TEST/RUN
I=D

.LIN TEST/RUN/ID
I<>D

.

А мой любимый "сложный" вопрос - про фортран: CALL SUB(1) - объяснить что делает данный оператор :)
Большинство знакомых программеров (даже тех кто знает фортран с далеких времен) отвечает неправильно (хотя с появлением всякого дерьма вроде g77 их ответ можно принять) :D

Eats
05.12.2016, 21:54
А мой любимый "сложный" вопрос - про фортран: CALL SUB(1) - объяснить что делает данный оператор :)
Большинство знакомых программеров (даже тех кто знает фортран с далеких времен) отвечает неправильноХолмс и Ватсон летят на воздушном шаре, поднялись уже высоко - за облака. Ватсон не выдержал и спрашивает:
- Холмс, как Вы думаете, где мы находимся?
- В корзине воздушного шара, дорогой Ватсон, - невозмутимо ответил Холмс.

Вот у Вас как код написан неряшливо, так же неряшливо Вы и вопрос пытаетесь задать. Обратите внимание: он у Вас даже не заканчивается вопросительным знаком! А ведь известно: какой вопрос, такой и ответ. По-моему, такая неаккуратность нехороша для программиста, выглядит как неуважение к остальным...

hobot
05.12.2016, 22:04
А мой любимый "сложный" вопрос - про фортран: CALL SUB(1) - объяснить что делает данный оператор
Я попытку ответа сделаю основываясь на опыте ПАСКАЛЬ + МАКРО11 и сторонние obj библиотеки,
такая команда вызывает глобальную процедуру (функцию) SUB и передаёт ей входящий параметр = 1.

- - - Добавлено - - -


Вот у Вас как код написан неряшливо
в чём вы видите неряшливость кода? вы листинги Корчагина видели ? )))

form
05.12.2016, 23:36
Обратите внимание: он у Вас даже не заканчивается вопросительным знаком!
Что правильно если внимательно прочитать как он написан ;)

- - - Добавлено - - -


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

- - - Добавлено - - -


Вот у Вас как код написан неряшливо
Разумеется не неряшливый код "был, но дискеты потерялись, а потому примеров не дам"? ;)

hobot
05.12.2016, 23:39
но есть нюанс - у фортрана аргументы векторные.
Ты в теме ПАСКАЛЬ И МАКРО-11 когда обсуждался опрос клавиатуры и системная библиотека фортрана уже
упоминал об этом. На самом деле, если Фортран под RT-11 такой мощный, почему до сих пор отдельной темы нет?
Исходники на нём так или иначе (для примеров) в архиве и сети есть, от простых до сложных.

form
05.12.2016, 23:42
почему до сих пор отдельной темы нет?
А смысл делать тему если никто фортран не использует видимо? :)
А есть желание - так все описания и фортрана для разных систем и системных подпрограмм доступны...

hobot
06.12.2016, 00:50
А смысл делать тему если никто фортран не использует видимо?
Я вот помню одного Фортранщика заядлого, это был пожилой преподаватель в Универе,
он на каком-то фортране под MS DOS там что то вроде турбо-среды писал на фортране кроссворд или программу для составления кроссвордов. Типа хобби наверное. Причём фортрана в программе вузовской не было. )))

form
06.12.2016, 00:52
на каком-то фортране под MS DOS
Ну под MS-DOS фортран ничем особым не выделяется, а в DEC системах фортран имеет полное библиотечное обеспечение для вызова системных директив :)

hobot
06.12.2016, 00:56
Не секрет, что языки программирования заточены для написания вполне определённых задач.
Ну как пример - Delphi это базы данных, ассемблер - это драйвера, Си - что бы троллить Паскальщиков )))
Макро-11 - просто очень правильный ассемблер, а вот Фортран? Что именно проще реализовать именно
с его помощью?

- - - Добавлено - - -


а в DEC системах фортран имеет полное библиотечное обеспечение для вызова системных директив в том числе я просматривал их и видел там процедуры и функции графических примитивов в духе бейсика (круги, линии, точки), вот как с ними? Где и в каких условиях они рассчитаны на использование под RT-11?

form
06.12.2016, 01:08
ассемблер - это драйвера
Я в досе на борландском паскале как-то драйвер делал :)
Точнее драйвер-программу - можно было и как device= подключать и как программу запускать. Правда внутри было много asm'ов - спасибо TP 6.0 и более новым - добавили возможность :)


Что именно проще реализовать именно
с его помощью?
Принято считать, что это язык для инженеров, но в целом - просто язык высокого уровня на мой взгляд. Но в DEC системах (как уже писал) он выделяется именно тем, что для него есть полная поддержка вызова системных директив. То есть поддержка прямо в системе, а не в пакете языка. Поставишь ты фортран в RSX/RT/RSTS или не поставишь - это твое дело, но в системной библиотеке изначально есть полный набор подпрограмм для системных вызовов, а в системной документации они подробно описаны.

- - - Добавлено - - -


графических примитивов
Были специальные наборы на тему графики - где-то таже книги валялись про некую библиотеку ГРАФОР - кажется выкинул давно. Вопрос только что считать графикой - в союзе например не видел ни одного живого примера где бы использовалась DECовская аппаратура для этой цели (точнее в пост-советское время уже увидел живую железяку - Andrey_Ak вроде 100/25 взял с такой или еще на каком 100/25 видел). Каждый лепил свой вариант, считал его самым лучшим и делал все под него :)

hobot
06.12.2016, 02:28
ГРАФОР

есть такое, на двух 400кб дискетах для RT-11 )



************************************************** **********
* *
* *
* ОБ'ЕДИНЕННЫЙ ИНСТИТУТ ЯДЕРНЫХ ИССЛЕДОВАНИЙ *
* ОТДЕЛ НОВЫХ МЕТОДОВ УСКОРЕНИЯ *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* ПАКЕТ ПРОГРАММ НА ФОРТРАНЕ IV *
* *
* С М Г Р А Ф О Р *
* *
* ДЛЯ ПРЕДСТАВЛЕНИЯ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ *
* НА МИНИ-ЭВМ MERA 60/30,СМ3,CM4 *
* *
* *
* *
* *
* *
* *
* ОПИСАНИЕ ПРИМЕНЕНИЯ *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* ДУБНА,1983 *
* *
* *
************************************************** **********


Описание увесистое как и сама библиотека

http://savepic.net/8629461.png


Содержимое пакета
GRFOR1.DSK


Volume ID: RT11A
Owner :
GRT .FOR 1 25-Jan-1988 14 PCALL .FOR 3 24-Jan-1988 15
GRAFOR.FTN 257 18-Jan-1988 18 GRAFOR.TXT 124 19-Jan-1988 275
FIND .BAS 1 25-Jan-1988 399 GRT4 .FOR 1 26-Jan-1988 400
GRT2 .FOR 1 25-Jan-1988 401 GRT1 .FOR 1 26-Jan-1988 402
GRT3 .FOR 1 14-Jan-1988 403 TPF .FOR 2 26-Jan-1988 404
GCALL .FOR 2 26-Jan-1988 406 GRT5 .FOR 2 26-Jan-1988 408
GRT3 .SAV 88 27-Jan-1988 410 PR .FOR 1 01-Feb-1988 498
DEMO .SAV 77 23-Feb-1988 499 < UNUSED > 224 576
15 Files, 562 Blocks
224 Free blocks


GRFOR2.DSK


Volume ID: RT11A
Owner :
GRAFOR.OBJ 766 25-Jan-1988 14 VCL .MAC 3 25-Jan-1988 780
PIX .MAC 3 22-Jan-1988 783 MOVE .FOR 2 24-Jan-1988 786
PLOT .FOR 2 24-Jan-1988 788 VCSUBR.MAC 3 23-Jan-1988 790
PAGE .FOR 3 25-Jan-1988 793 ENDPG .FOR 2 25-Jan-1988 796
DEMO .FOR 2 25-Jan-1988 798
9 Files, 786 Blocks
0 Free blocks


DEMO .SAV 77 - вот где её надо запускать, что бы что то увидеть?



В общем легко ищется в архиве и (я могу ошибаться), но похожие
граф. наработки и для UNIXового Си есть в рамках ПО для ОС РАФОС.

form
06.12.2016, 08:59
Ed Post
Wilsonville, Orezon

В прошлом, во времена золотой эры ЭВМ было легко отличать
мальчика от мужа (иначе их называют "сосунки" и "настоящие
мужчины", соответственно). Тогда настоящие мужчины были те, кто
понимал в программировании, с сосунки - те, кто не понимал.
Настоящий программист легко произносил такие фразы, как "DO 10
I = 1, 10" или "АВОСТ", а все остальные нечто вроде "ЭВМ слиш-
ком сложна для меня" и "Я не могу полагаться на ЭВМ - они слиш-
ком безличны". Предыдущая работа, B. Feirstein, "Настоящие муж-
чины не употребляют фруктовый пирог", издание PocketBook, 1982,
отмечает, что настоящие мужчины ни на что не полагаются и не
боятся быть обезличенными.

Но времена меняются. Сегодня мы живем в мире, в котором
маленькие старые дамы могут приобрести компьютезированную
микроволновую печь, 12-летние пацаны могут выбить из колеи
настоящих мужчин при игре на ЭВМ в астероиды и в очко и, вообще,
любой человек может купить и понять свой собственный персональ-
ный компьютер. Настоящий программист в опасности, он может быть
заменен студентами высшей школы.

Однако, существует разница между студентом-первокурсником,
освоившим на ЭВМ игру в очко и настоящим программистом. Знание
этих различий может помочь детям познать к чему стремиться -
модель поведения, стереотоп отца. Это также поможет сохранить
рабочие места для настоящих программистов.

Самый простой способ определить, кто является настоящим про-
граммистом - по используемому языку программирования. Настоящие
программисты используют Фортран. Сосунки используют Паскаль.
Никлауса Вирта, разработчика Паскаля, однажды спросили: "Как вы
произносите свою фамилию?". "Вы можете обращаться ко мне по
фамилии, произнося ее 'Вирт', или обращаться ко мне по значению,
'Ворт'", - ответил он. [Игра слов : Nicklaus Wirth произносится
так же, как английское слово Worth - стоящий, ценный]

Исходя из этой ремарки, любой сразу поймет, что Никлаус Вирт
- сосунок. Единственный механизм передачи параметров, принима-
емый настоящим программистом - это передача параметров по зна-
чению, как это реализовано в компиляторах Фортрана G и H для
ЭВМ IBM/370. Настоящим программистам для выполнения работы не
нужны абстрактные концепции: для счастья им достаточно перфора-
тора, компилятора Фортран-IV и пива. Настоящие программисты
пишут программы работы со списками, обработки строк, учета ре-
сурсов (если они вообще это делают) и искусственного интелекта
на Фортране.

Если вы не можете выполнить эти работы на Фортране, выполни-
те их на ассемблере. Если же их нельзя выполнить на ассемблере,
их не стоит делать вообще.

В последние несколько лет академиков от вычислительной тех-
ники вовлекли на стезю структурного программирования. Они
утверждают, что программы становятся более понятными, если
используются специальные языковые методы и конструкции. Они,
конечно, не могут договориться между собой, какие точно кон-
струкции следует использовать, а примеры, иллюстрирующие их
точку зрения, всегда помещаются на одной страничке неизвестных
журналов. Когда я окончил школу, я считал себя самым лучшим
программистом в мире. Я мог написать непобедимую программу игры
в крестики-нолики в трехмерном пространстве на пяти различных
языках программирования, а также написать программу, состоящую
из 1000 строк, которая бы работала. Затем я попал в реальный
мир. Моей первой задачей было прочитать и понять фортрановскую
программу емкостью 200000 строк, а затем увеличить скорость ее
работы в 2 раза. Любой настоящий программист скажет вам, что
все структурированное программирование мира не поможет вам
решить проблемы вроде этой - решение этой задачи требует
настоящего таланта.

Несколько наблюдений о настоящих приграммистах и структурном
программировании:

- настоящие программисты не боятся использовать GOTO;
- настоящие программисты могут без смущения написать цикл DO
на пяти страницах;
- настоящие программисты любят арифметические операторы IF,
т.к. их использование делает программу более интересной;
- настоящие программисты используют самомодифицирующий код,
особенно в тех случаях, когда это экономит 20 наносекунд в
середине очень короткого цикла;
- настоящие программисты не нуждаются в комментариях : текст
программы все объясняет;
- поскольку в Фортране отсутствуют структурные операторы IF,
REPEAT ... UNTIL или CASE, настоящим программистам не
нужно беспокоиться, что они их не используют; кроме того
эти операторы можно при необходимости симулировать с
помощью присваиваемых GOTO.

В последнее время в прессе муссируются структуры данных.
Абстрактные типы данных, структуры, указатели, списки и строки
стали популярны в определенных кругах. Вирт, сосунок, написал
даже целую книгу ("Алгоритмы + Структуры данных = Программы",
Prentice Hall, 1976 [русский перевод - изд. "Мир", 198?]), в
которой утверждает, что можно написать программу на базе струк-
тур данных, не используя другие способы. Как все настоящие
программисты знают, единственной полезной структурой данных
является массив. Строки, списки, структуры и наборы - это все
разновидности массивов и их можно рассматривать как массивы без
усложнения вашего языка приграммирования. Хуже всего с этими
хитрыми типами данных то, что вы должны их описывать, а
настоящие языки программирования, как мы все знаем, обладают
возможностью неявного задания типа, основанного на первой букве
6-символьного имени переменной.

В какой операционной системе работает настоящий программист?
В CP/M ? Боже сохрани! Помимо всего прочего, это в основном иг-
рушка, а не операционная система. Даже маленькие старые дамы и
абитуриенты могут работать в CP/M и понять ее.

UNIX, конечно, более сложная система - типичный последова-
тель UNIX'а никогда не может запомнить, как на этой неделе на-
зывается команда PRINT - но когда он наконец доберется до нее,
UNIX становится восхитительной видеоигрой. Люди не делают серь-
езных работ в системе UNIX, они рассылают шутки по всему миру
по USENET или пишут приключенческие романы и научные статьи.

Нет, настоящий программист использует OS/370. Хороший про-
граммист может найти и понять описание только что полученного
сообщения об ошибке IJK305I в руководстве по JSL. По-настоящему
знаменитый программист может найти ошибки в распечатке 6-мега-
байтной области памяти, не используя калькулятор шестнадцати-
ричной системы счисления.

OS/370 по настоящему удивительная система. В ней можно
уничтожить работы стоимостью несколько человеко-дней с помощью
одного неправильно помещенного пробела, так-что штат програм-
мистов всегда должен быть на чеку. Наилучший способ общения с
системой - через перфоратор. Некоторые утверждают, что в OS/370
существует система разделения времени, но после внимательного
изучения я пришел к выводу, что они ошибаются.

Какие инструменты использует настоящий программист в своей
работе? Теоретически, настоящий программист может запускать
свои программы, набирая их на передней панели ЭВМ. В добрые
старые времена, когда ЭВМ имели передние панели, этот метод ис-
пользовался время от времени. Типичный настоящий программист
знал наизусть начальный загрузчик в шестнадцатиричной системе и
восстанавливал его с пульта, когда он разрушался его програм-
мой. Более того, память была памятью - ее содержимое не пропа-
дало при выключении питания. В настоящее время память либо за-
бывает факты, когда вы этого не хотите, либо помнит о вещах,
которые давно следовало бы забыть. Ходит легенда, что Seymour
Cray, изобретатель супер-ЭВМ Cray-1 и большинства ЭВМ фирмы
Control Data, ввел с пульта наизусть первую операционную систе-
му ЭВМ CDC 7600 при первом включении этой ЭВМ. Конечно, Cray -
настоящий программист.

Одним из моих любимых настоящих программистов был Джим -
системный программист фирмы Texas Instruments. Однажды, ему по
междугородному телефону позвонил пользователь, чья система раз-
рушилась в процессе очень важной работы. Джим исправил систему
по телефону, заставляя пользователя набирать на передней панели
ЭВМ команды обращения к диску, исправлять системные таблицы в
шестнадцатиричной системе и считывать ему по телефону содержи-
мое регистров. Мораль этой истории: хотя настоящий программист
обычно включает в набор своих инструментов перфоратор и АЦПУ,
он может в экстренных ситуациях обойтись передней панелью ЭВМ и
телефоном.

В некоторых фирмах редактирование текстов программ больше не
представляет собой очередь из 10 инженеров, ожидающих освобож-
дения перфоратора 029. Более того, здание где я работал не
содержит вообще ни одного перфоратора. Настоящий программист в
таких условиях должен выполнять работу с помощью текстового
редактора. Большинство систем предлагают на выбор несколько
текстовых редакторов, но настоящий программист должен быть
очень осторожен в выборе, отражающего его индивидуальность.
Многие думают, что наилучшие текстовые редакторы в мире
написаны в исследовательском центре фирмы Xerox в Palo Alto для
работы с ЭВМ марок Alto и Dorado. К сожалению, ни один настоя-
щий программист не будет работать на ЭВМ с операционной систе-
мой под названием Smalltalk (короткий разговор) и конечно же не
будет беседовать с ЭВМ с помощью "мышки".

Некоторые из концепций этих редакторов фирмы Xerox были реа-
лизованы в редакторах, работающих в операционных системах с бо-
лее солидными названиями, такими как EMACS и VI. Дело в том,
что настоящий программист считает плохим следующий принцип ре-
дактора: "То, что вы видите, то вы и получите". Настоящий прог-
раммист желает редактор с принципом: "Вы это просили, вот вам";
т.е. редактор, который был бы сложным, шифрованным, мощным,
непрощающим и опасным. Редактор TECO - чтобы быть точным.

Было замечено, что последовательность команд TECO более на-
поминает помехи в линии передачи, чем читаемый текст. Одна из
самых развлекательных игр с TECO - напечатать в качестве ко-
мандной строки свою фамилию и попытаться догадаться, что она
сделает. Точно так же любая случайная опечатка при работе с
TECO может разрушить вашу программу, или, хуже того, внести не-
уловимые и мистические ошибки в уже работающую программу.

Из-за этого настоящие программисты неохотно редактируют уже
работающие программы. Они считают более простым непосредственно
латать двоичный объектный код, используя прекрасную программу
под названием SuperZap (или ее эквивалент на не-IBM машинах).
Этот метод настолько хорош, что многие программы, работающие на
ЭВМ фирмы ИБМ, не имеют ничего общего со своим собственным
текстом на Фортране. В большом количестве случаев первоначаль-
ный символьный текст программы вообще не существует. Когда
наступает время подправить такого рода программу, никакой
администратор даже не думает послать на эту работу кого-либо,
кроме настоящего программиста - никакой сосунок (структурный
программист) не будут знать даже с чего начать. Это называется
защита от несанкционированного доступа.

Некоторые не используемые настоящим программистом средства
программирования включают:

- препроцессоры Фортрана, такие как Mortran и Ratfor; эти
кулинарные рецепты в программировании хороши для выпечки
фруктового пирога;
- отладчики для работы с текстом программы; настоящие про-
граммисты могут свободно читать распечатку оперативной
памяти;
- компиляторы с проверкой границ массива; эти компиляторы
душат творчество, запрещая наиболее интересные варианты
оператора EQUIVALENCE и препятствуют модификации операци-
онной системы с помощью отрицательных индексов массивов.
Кроме всего прочего, контроль границ массива не эффективен;

- системы сопровождения и архивизации символьных текстов
программ; настоящий программист хранит текст своих
программ в закрытом на замок ящике (на перфокартах), т.к.
владелец не может оставить свои программы без охраны.

Где же работает типичный настоящий программист ? Какие про-
граммы достойны таких талантливых индивидумов ? Вы можете быть
уверены, что настоящий программист не умрет за написанием про-
граммы "Зарплата" на Коболе или сортируя список почтовых
отправлений журнала People. Настоящий программист желает задачи
с важностью землетрясения.

Настоящие программисты работают на национальную лабораторию
в Лос-Аламосе, создавая программы на супер ЭВМ Cray-1, модели-
рующие атомную бомбу. Они так же работают на Агенство по Наци-
ональной Безопасности, расшифровывая передачи русских.

В большой степени из-за усилий тысяч настоящих программистов,
работающих в NASA, наши ребята добрались до Луны и вернулись
обратно, опередив космонавтов. ЭВМ в космическом корабле "Шатл"
были запрограммированы настоящими программистами, и эти же
истинные профессионалы работают на фирму Боинг, создавая опера-
ционные системы для крылатых ракет.

Одна из приводящих в благоговейный трепет работ настоящих
программистов выполнена в Лаборатории реактивного движения,
Калифорния. Многие знают всю операционную систему космических
кораблей "Пионер" и "Вояджер" наизусть. С помощью симбиоза
больших наземных фортрановских программ и маденьких бортовых
ассемблерных, они могут совершать невероятные чудеса в нави-
гации и импровизации - такие, как попасть в окно шириной 10 км
в кольце Сатурна после 6-ти лет полета в космосе и починить или
обойти неисправные сенсорные платформы, радиопередатчики или
аккумуляторы. Утверждают, что один настоящий программист умуд-
рился засунуть прграмму распознавания образов в несколько сот
байт неиспользованной памяти корабля "Вояджер", которая осу-
ществляла поиск, обнаружила и сфотографировала новую луну
Юпитера.

Одна из планируемых задач для корабля "Галлилей" - использо-
вать притяжение Марса на траектории полета к Юпитеру. Эта
траектория проходит в 80 +/- 3 км от поверхности Марса. Никто
не собирается доверить паскалевской программе или программисту
такую навигационную задачу.

Многие из настоящих программистов всего мира работают на
правительство США, в основном в Министерстве Обороны. Так и
должно быть. Однако, недавно на небосклоне настоящих програм-
мистов появилась черная туча. Кажется, что кто-то из высоко-
поставленных сосунков в Министерстве Обороны решил, что все
оборонные программы должны быть написаны на некоем великом
унифицированном языке ADA. Некоторое время казалось, что ADA
была предназначена стать языком, который шел вразрез со всеми
правилами настоящего программирования. Это язык со структурой,
типами данных, строгим синтаксисом и точками с запятой. Короче,
он был разработан для сдерживания творчества типичного насто-
ящего программиста. К счастью, язык одобряемый Министерством
Обороны, обладает достаточно интересными свойствами, которые
делают его приемлемым - он невероятно сложен, включает в себя
способы порчи операционной системы и перераспределения памяти,
и Эдгар Дейкстра (Edsgar Dijkstra) не любит его. Дейкстре, как
вы должны знать, автору краеугольной работы по методологии
программирования "GOTO - считать вредными", апплодируют про-
граммисты на Паскале и подобные им сосунки. Да и потом, закоре-
нелый настоящий программист может написать фортрановскую про-
грамму на любом языке.

Настоящий программист может пойти на компромис со своими
принципами и работать над вещами немного более тривиальными,
чем распад жизни, при условии, что здесь достаточно платят.
Например, существует несколько настоящих программистов,
разрабатывающих видео-игры в Atari. Но они сами в игры не
играют. Настоящий программист знает, как выиграть у машины, и в
этом нет пряного удовольствия. Каждый работающий в LucasFilm
является настоящим программистом, потому, что нужно быть
сумасшедшим, чтобы отвергнуть деньги 50-ти милионов поклонников
Звездных войн (Star Wars).

Доля настоящих программистов, занятых машинной графикой,
несколько ниже нормы в основном потому, что никто пока не нашел
ей применения. С другой строны, вся машинная графика выполнена
на Фортране, так что существует определенное число людей,
занимающихся графикой для того, чтобы избежать программирования
на Коболе.

В общем случае настоящий программист развлекается так же,
как и работает - с помощью ЭВМ. Он не перестает удивляться
тому, что его работодатель платит ему за то, что он все равно
бы делал для развлечения, хотя он достаточно осторожен, чтобы
высказать это мнение вслух. Иногда настоящий программист
выходит из конторы, чтобы глотнуть свежего воздуха или кружечку
-другую пива. Существует несколько признаков, по которым можно
узнать настоящего программиста за пределами машинного зала :

- на вечеринке настоящие программисты это те, кто сидит в
углу, обсуждая защиту операционных систем и как ее обойти;
- на футбольном матче настоящий программист сравнивает ход
игры с "проигровками", распечатанными на фальцованной 11-
или 14-дюймовой бумаге;
- на пляже настоящий программист рисует блок-схемы на песке;
- настоящий программист ходит в диско-клуб, чтобы посмотреть
мигание лампочек;
- на похоронах настоящий программист изрекает : "Бедный
Джордж. А ведь он почти заставил работать программу
сортировки, когда его хватил инсульт";
- в бакалейном магазине настоящий программист настаивает
на собственноручной проверке банок на лазерном аппарате,
т.к. он не верит, что операторы могут правильно отперфо-
рировать данные с первого раза.

В каких условиях лучше всего работается настоящему програм-
мисту ? Это очень важный вопрос для начальников настоящих
программистов. Учитывая высокую стоимость содержания одного
такого в штате, лучше создать ему или ей оптимальные условия.

Типичный настоящий программист живет перед дисплеем ЭВМ.
Вокруг этого дисплея расположены листинги программ, над
которыми он когда-либо работал. Они складированы в кучи
приблизительно в хронологическом порядке на каждой плоской
поверхности конторы. Вы так же обнаружите полдюжины, или около
того, наполовину выпитых чашек с холодным кофе. Иногда в кофе
можно обнаружить плавающие "хабарики" сигарет. В некоторых
случаях в чашках находится выжатый апельсин. И только в тех
случаях, когда программист не очень хорош, вы увидите
экземпляры руководства OS JSL и принципов работы, открытых на
особо интересных страницах. Приклеенный клейкой лентой, на
стене висит распечатанный на АЦПУ календарь с собачкой Снуппи
за 1969 год. На полу разбросаны обертки от хлеба с сыром и
земляными орехами (такого, который становится черствым уже в
пекарне, так что не может стать хуже в торговых автоматах). И,
наконец, в верхнем левом ящике стола, под коробочкой Oreos,
находится линейка-шаблон для вычерчивания блок-схем, оставлен-
ная предыдущим владельцем стола. Настоящие программисты пишут
программы, а не документацию, которую они оставляют штату
сопровождения.

Настоящий программист может работать по 30, 40 и даже 50
часов непрерывно, под интенсивным нажимом. На самом деле, он и
предпочитает так работать. Плохое время отклика не беспокоит
настоящего программиста; он получает возможность вздремнуть
между трансляциями. Если график выполнения работы не очень
жесткий, то настоящий программист предпочитает делать свою
жизнь более захватывающей, работая первые 9 недель над
маленькой, но интересной частью проблемы. Затем, он заканчивает
выполнение всей остальной части за 2 или 3 50-часовых марафона.
Это не только впечатляет начальника, но и создает удобное
оправдание не делать документацию. В общем случае, ни один
настоящий программист не работает с 9 до 5, за исключением тех,
кто работает в ночную смену. Настоящие прграммисты не носят
галстуков. Настоящие программисты приходят на работу вовремя -
к обеду. Настоящий программист может знать, а может и не знать
имя своей супруги. Он, однако, знает наизусть таблицу ASCII
(или EBCDIC) символов. Настоящие программисты не умеют готовить.
Бакалейные магазины не часто открыты в 3 часа ночи, так что они
должны уметь выживать на печенье и кофе.

Заглядывая в будущее, некоторые настоящие программисты
считают, что новейшее поколение программистов имеет не такие же
взгляды на жизнь, как их старшие товарищи. Многие из них
никогда не видели передней панели ЭВМ. Едва-ли кто-либо из
выпускников в наши дни может производить вычисления в
шестнадцатиричной системе без калькулятора. Сегодняшние
выпускники колледжей слабы - они защищены от реальностей жизни
символьными отладчиками, редакторами текстов, которые подсчиты-
вают скобки, и лояльными к пользователю операционными системами.
Хуже того, некоторые из этих патентованных ученых умудрились
"защититься" без изучения Фортрана ! Неужели нам предписано
свыше стать отраслью фанатиков UNIX'а и паскалевских програм-
мистов ?

Из собственного опыта, я думаю, можно смело сказать, что
будущее прекрасно для настоящих программистов. Ни OS/370, ни
Фортран не высказывают ни каких признаков отмирания, несмотря
на усилия программистов на Паскале. Даже такие изощренные
уловки, как добавление конструкций структурного программиро-
вания в Фортран, провалились. Да, конечно, некоторые изготови-
тели ЭВМ выпустили компиляторы Фортрана-77, но каждый из них
оставил возможность перейти в режим компилятора Фортрана-66 с
помощью удаления одной перфокарты - чтобы компилировать циклы
DO как предписано богом.

Даже UNIX может быть не так уж плох для настоящих програм-
мистов, как в прошлом. Последняя реализация UNIX'а обладает
потенциальными возможностями, ценными для любого настоящего
программиста. Она имеет два различных и слегка несовместимых
пользовательских интерфейса, аркан и сложный драйвер терминала,
и виртуальную память. Если пренебречь тем, что он структурный,
то даже программирование на языке "C" может быть по достоинству
оценено настоящим программистом. В конце концов, в нем нет
проверки типов, имена переменных имеют 7 (10 ?, 8 ?) символов в
длину и введен полезный тип данных "указатель" (pointer).
Получается, как будто соединены воедино лучшие части языка
Фортран и Ассемблера, не говоря уже о более творческих примене-
ниях оператора #DEFINE.

Нет, будущее не так уж и мрачно. В последние несколько лет
даже популярная пресса сообщала о новом урожае блестящих
фанатиков, выпущенных из таких мест, как Стенфорд и Массачусет-
ский Технологический Институт, в реальный мир. По всему видно,
что дух настоящего программирования живет в этих молодых юношах
и девушках. Пока существуют плохо поставленные задачи, странные
ошибки и нереалистичиские расписания машинного времени, будут
находится настоящие программисты, желающие взять на себя и
решить проблему, оставив документацию на потом.

Да здравствует Фортран !

Перевод : Пяткин А.С. -- Ленинград

- - - Добавлено - - -


Если вы не можете выполнить эти работы на Фортране, выполни-
те их на ассемблере. Если же их нельзя выполнить на ассемблере,
их не стоит делать вообще.
Верно сказано ;)

- - - Добавлено - - -


а настоящие языки программирования, как мы все знаем, обладают
возможностью неявного задания типа, основанного на первой букве
6-символьного имени переменной.
God is REAL, unless declared INTEGER. Это про фортран :)

- - - Добавлено - - -


Для понятности можно написать по=другому

TST #261

Можно и TST #SEC - все мнемоники определены: BR=400, MOV=10000 итд...

AFZ
06.12.2016, 11:54
А есть желание - так все описания и фортрана для разных систем и системных подпрограмм доступны... Я довольно много программировал на Фортране на ЕС ЭВМ (отечественные клоны Системы-360) и был поражен, как легко и непринужденно удалось перейти на Фортран RT-11. Не считая, конечно, доступных объемов памяти: на ЕС-ках тогда 100-200Кбайт было без вопросов, а постоять в очереди, так можно было и мегабайтную задачу прогнать. А тут Э-60 с центральным процессором М2 и 56К оперативки...


а вот Фортран? Что именно проще реализовать именно с его помощью? Вычисления. Очень удобный язык для всяких расчетов.

Oleg N. Cher
06.12.2016, 17:21
Вычисления. Очень удобный язык для всяких расчетов.Он был очень удобный в 60-х. За неимением ;-) И то, шли дискуссии о недостатках Алгола и PL/1 в сравнении с Фортраном.

2hobot: в данном случае мы имеем дело с "трудно старого коня заставить ходить в новой упряжке" ;-) Привязка к языку со старинных времён. На сегодняшний день всё самое вкусное из Фортрана реализовано в любом языке программирования. Есть и развитие Фортрана - Fortress (https://ru.wikipedia.org/wiki/Fortress).

hobot, AFZ, вероятно со мной не согласится, но я тебе отвечаю. Возьми книгу С.Свердлова «Языки программирования и методы трансляции (http://forcoder.ru/about-coding/yazyki-programmirovaniya-i-metody-translyacii-959)» и почитай вкратце про каждый язык, там про корявости Фортрана написано хоть и сжато, но очень хорошо.

AFZ
06.12.2016, 18:35
На сегодняшний день всё самое вкусное из Фортрана реализовано в любом языке программированияИ где так же правильно нативно реализован тип COMPLEX ? Сразу скажу, переопределение всей арифметики в приплюснутом Си не в счет, это костыли!

form
06.12.2016, 18:44
нативно реализован тип COMPLEX
А также полноценные неограниченные аргументы которые можно пропускать :)

Eats
07.12.2016, 02:54
Я попытку ответа сделаю основываясь на опыте ПАСКАЛЬ + МАКРО11 и сторонние obj библиотеки,
такая команда вызывает глобальную процедуру (функцию) SUB и передаёт ей входящий параметр = 1.Я ж не просто так привёл анекдот про Холмса: строка CALL SUB(1) на самом деле не делает ничего. То есть вообще НИ-ЧЕ-ГО. Если кто-либо что-либо и делает, то:
1. Процессор под управлением транслятора, генерируя объектный код.
2. Процессор под управлением оттранслированной и скомпонованной программы, исполняя её код. Естественно, система команд этого кода должна совпадать с системой команд процессора. Ещё более естественно, что от строки исходного текста в исполняемом коде не остаётся ничего, даже если исходник был на языке ассемблера, не говоря уже о ЯВУ.

Что же до фортрана, то в RT-11 (и её родителях) при передаче параметров он передаёт такой мощный блок этих параметров, что паскали и прочие ассемблеры нервно курят в сторонке. Начнём с того, что в разбираемом случае он передаёт подпрограмме две :) единицы. Кстати, именно из-за структуры этого блока длина имени подпрограммы фортрана ограничена 6-ю символами. И если мне не изменяет память (паскалеводы меня в случае чего поправят), то паскаль в RT11 требовал процессоров с плавающей арифметикой. Фортран же не только не требовал, но на процессоре 1801ВМ2 даже выполнял эти вычисления вчетверо быстрее паскаля. Правда, знающие люди сказали, что на оригинальном процессоре LSI-11 этих тормозов не было, но мой опыт работы ограничен только советскими ЧПУхами, а в них были только 1801ВМ1 да 1801ВМ2, да полная плата М2 от Электроники-60.

в чём вы видите неряшливость кода?После ASCIZ ни разу нет выравнивания на границу слова. В первом разе это прокатило, поскольку получилась последовательность чётной длины. Во втором разе длина последовательности получилась нечётной, но поскольку это было в конце программы, то можно условно считать, что тоже прокатило. В любом случае транслятор поправил бы эту ошибку, от чего я и сказал не "ошибка", а именно "неряшливость". В 16-разрядной системе байтовая адресация - атавизм (вон, у 64-разрядного Крея и символьные, и целые, и плавающие, и комплексные данные имели разрядность 64 бита!), поэтому с ней надо быть поаккуратнее. Точно так же неряшливо товарищ задал и свой "сложный" вопрос, сложность которого заключается именно в неопределённости, расплывчатости, недосказанности его формулировки.

hobot
07.12.2016, 03:29
Точно так же неряшливо товарищ задал и свой "сложный" вопрос, сложность которого заключается именно в неопределённости, расплывчатости, недосказанности его формулировки.
вопрос был именно о Фортране и особенности передачи аргументов библиотечным процедурам и функциям.
Обычный абстрактный вопрос как дополнение к билету на экзамене )))

- - - Добавлено - - -


Возьми книгу С.Свердлова
Приветствую, Олег! Редкий ты гость в нашем разделе )
Книгу обязательно для общего образования поизучаю - поскольку мне сама тематика интересна. Остальные разборки по Фортрану тут в общем то и связаны с ОС и оборудованием не совсем современным ) Там есть ключевой комментарий от form'а, в чем именно
уникальность реализации Фортрана для PDP ) Хотя - некоторые вещи не стареют и со сцены не спешат уходить )

form
07.12.2016, 07:41
именно из-за структуры этого блока длина имени подпрограммы фортрана ограничена 6-ю символами
А у ассемблера MACRO-11 каким блоком это ограничение вводится? ;)
Может все-таки дело в формате символьных таблиц стандартного OBJ файла для PDP-11?
В этом блоке ровно n+1 (где n - количество аргументов как указанных так и пропущенных) слов. Первое слово слово - количество аргументов, следующие - адреса (или -1 если аргумент пропущен). Все. К именам никакого отношения. К слову, такой способ передачи параметров ипользуется почти во всех реализациях фортрана, не только в RT-11. Почти - потому, что есть g77 в котором параметры передаются по сишному или около того, но его и фортраном-то назвать нельзя ибо он не умеет самое главное в фортране - отрабатывать фортрановский (!) символ форматирования :)
И, к слову, к чему поминать фортран для RT-11? Точно также все выглядит и в фортране для RSX. Можно скомпилировать в одной системе, перетащить результат в другую, и уже там собрать.


то паскаль в RT11 требовал процессоров с плавающей арифметикой
Это параметр генерации паскаля. Другое дело, что в союзе наверное никто никогда не видел дистрибутива паскаля для RT-11 (у меня его до сих пор нет - только для RSX).

UPD. Проверил тот паскаль, что у меня есть в RT-11 - без FPP все работает. Тест правда совсем простой - несколько действий с плавающей точкой.


После ASCIZ ни разу нет выравнивания на границу слова.
После ASCIZ нету, но в данном конкретном случае есть - это обусловлено размером строки. XXX в коментарии для того и написано, что это "криво, но работает". Разумеется в живой программе если там была бы строка текста, после нее бы стоял .EVEN. Ставить же его после любой строки ну совершенно необязательно (например если она часть структур данных фиксированной длины). Именно так подобные вещи коментируют и в наше время (см исходники любой операционки и софта под нее).


сложность которого заключается именно
Сложность видимо заключается в желании позанудствовать. Вопрос (а точнее - тоже позанудствую - упоминание вопроса) выглядел понятным для всех, кроме Вас ;)

hobot
07.12.2016, 09:28
я понимаю, что 77 Фортран на PDP наверное самый прогрессивный, но ведь
есть ещё более ранняя (или просто другая) реализация с римским номеров в названии iV как у него
там с системными вызовами (имеется в виду системная библиотека)? И в целом, надо бы кратко хотя
бы охарактеризовать обе реализации и совместимость (синтаксис) программ? Кстати в сети полно
по разному обоснованных рекомендаций Фортрана как "первого алгоритмического языка" вместо Бейсика или
Паскаля.

- - - Добавлено - - -

Глядя на объём всего F77 на диске RT-11 5.7 - для чисто флопов очень как-то громозко всё выглядит, с ЖД ничего не страшно (это я про УК-НЦ!).

- - - Добавлено - - -

F-IV компактнее, но видимо совсем совсем не актуальный???

- - - Добавлено - - -

В инете упоминается 77 и 90 синтаксис: 90 - это уже за пределами PDP видимо?

form
07.12.2016, 09:40
названии iV как у него
там с системными вызовами (имеется в виду системная библиотека)?
Библиотеке пофигу к какому фортрану ее подключить. Формат вызова одинаковый.


объём всего F77 на диске RT-11 5.7
Да, F77 здоровенный и по большому счету в SJ/SB/FB фактически непригоден для компиляции больших программ - просто памяти не хватит.


90 - это уже за пределами PDP видимо?
У DEC F77 последняя реализация.


F-IV компактнее, но видимо совсем совсем не актуальный???
Честно говоря, ни разу не видел фортрановской программы, выходящей за рамки FIV :)

AFZ
07.12.2016, 11:34
А у ассемблера MACRO-11 каким блоком это ограничение вводится?
Может все-таки дело в формате символьных таблиц стандартного OBJ файла для PDP-11? А тут еще неизвестно, кто виноват. Запросто может быть так, что, проектируя формат объектного модуля, инженеры DEC прикинули, что стандартному Фортрану 6-символьных внешних имен хватает, ну и нам хватит! Мы же, мол, не Систему-360 проектируем...

- - - Добавлено - - -


Правда, знающие люди сказали, что на оригинальном процессоре LSI-11 этих тормозов не было, но мой опыт работы ограничен только советскими ЧПУхами, а в них были только 1801ВМ1 да 1801ВМ2, да полная плата М2 от Электроники-60. Если что, М2 - это цельнотянутая LSI-11/03, отличие лишь в корзиночном разъеме - в оригинале он дюймовый, у нас его сделали метрическим, с шагом ног 3.00 мм.

form
07.12.2016, 11:34
DEC прикинули, что стандартному Фортрану 6-символьных внешних имен хватает
Фортран тут абсолютно непричем. Это ограничение формата OBJ. Пофигу фортран это, MACRO-11 или еще кто :)
Формат записи о символе в OBJ файле: два слова имени в RADIX-50, байт 0, байт 2 и еще одно слово просто так.
И никаких различий между маленькими и большими буковками. Если такое различие нужно - его нужно реализовывать обходными путями.

AFZ
07.12.2016, 11:51
Фортран тут абсолютно непричем. Это ограничение формата OBJ. Естественно. Но, когда сочиняли этот формат OBJ, по фигу было, сколько слов в RAD50 отвести под это имя - 2, 3 или вообще плюнуть на этот RAD50 и забабахать строку ASCII произвольной длины до 255 символов. Однако выбрали 2 слова RAD50 и нельзя исключить влияние Фортрана, что мол Фортрану 6-символьных идентификаторов хватает, ну и нам хватит.

Более того, похоже, это началось еще раньше. Первый-то ассемблер был абсолютным, результат выдавал в виде LDA-файла. И фактическая длина меток (любых) в 6 символов как бы тоже не с Фортрана была позаимствована - из тех же соображений: Фортрану хватает, и нам хватит!..

form
07.12.2016, 12:02
Более того, похоже, это началось еще раньше.
Ну тут уж теперь трудно судить что и как было :)

Кстати ради интереса посмотрел как сделано в C. А никак - те же 6-символьные ограничения и пофигу большие-маленькие буковки, а "_" заменяется на "." :)

Eats
07.12.2016, 12:32
вопрос был именно о Фортране и особенности передачи аргументов библиотечным процедурам и функциям.Здесь и заключается ошибка, а точнее - две: :)
1. Вопрос был не обо всём фортране, а об одном из его операторов. Если не чувствуете разницу, то поясню: свойства подмножества не обязательно будут выполняться на всём множестве. Более того, у фортрана есть несколько типов вызовов подпрограмм, осуществляемых по-разному.
2. Вопрос был "что делает данный оператор". Заметьте, не "как он это делает", а просто "что делает" без требования раскрыть подробности:
2.1. если Вы считаете, что он передаёт аргументы, то можно говорить о передаче аргументов, но об особенностях этой передачи говорить рано;
2.2. поскольку фортран передаёт не аргументы, а ссылки на ссылки на них, то говорить об особенности передачи аргументов просто некорректно;
2.3. однако рассматриваемый оператор не только передаёт ссылки, а ещё и передаёт управление, и тут уж "особенности передачи аргументов" совсем побоку.
Строго говоря, Ваш первый ответ про передачу единицы был верным. Не полным, далеко не полным, но формально он ещё не содержал ошибок. Ошибки посыпались, когда Вы начали раскрывать неаккуратно сформулированный вопрос.

Обычный абстрактный вопрос как дополнение к билету на экзамене )))Ай, бросьте! И обычный абстрактный ответ "Здесь и заключается ошибка"! И обычная абстрактная оговорка "То есть конечно 1 в качестве параметра передается". По его словам, Вы ответили правильно, но при этом ответили неправильно. :)
Гляньте на примерный кусок (к тому же ещё и неполный, там на самом деле есть ещё третья единица и собственно передача управления, которое - отдельная песня, ну и нумерацию строк я для простоты тоже опускаю) кода, генерируемого фортраном при вызове фортрановской подпрограммы:

.PSECT $CODE
; CALL SUBROUTINE
JSR R4, $OTIS ; заполнение блока параметров
BLPAR
; тут должна была быть передача управления
; . . .
.PSECT $DATAP
BLPAR: .RAD50 /SUB / ; здесь всегда 6 символов.
1 ; количество параметров
$PARAM
$PARAM: $00002 ; адрес 1-го параметра,
; адрес 2-го параметра, если бы он был,
; адрес 3-го параметра ...,
; и т.д. до конца списка параметров.
.PSECT $DATA
$00002: 1Ваш ответ "передаёт ей входящий параметр = 1" настолько прост и наивен, что не может содержать в себе ошибку. Другое дело, что единицу фортран передаёт не эту и не там, где Вы думали. Но тем не менее он же её помимо всего прочего передаёт в конце концов!? Вон она там, самая последняя! Но товарищу надо было показать, что все вокруг негодяи, а он - Д'Артаньян, поэтому он голословно уличил Вас в недопущенной Вами ошибке, хотя бы и с оговоркой. С точки зрения логики его суждение ложно, а с точки зрения этики - подленько. :) Нет бы сказать: "Да, верно, передаёт единицу." И далее уточнить: "А как он её передаёт? И делает ли он ещё что-нибудь?" И всё было бы логично и последовательно.


я понимаю, что 77 Фортран на PDP наверное самый прогрессивный, но ведь
есть ещё более ранняя (или просто другая) реализация с римским номеров в названии iV как у него
там с системными вызовами (имеется в виду системная библиотека)?Я на 77-м почти не работал (если не считать оффтопика). На ДВК - только фортран-4. Про него и веду речь.

Oleg N. Cher
07.12.2016, 16:16
И где так же правильно нативно реализован тип COMPLEX ?А зачем нативно?

Есть подход, когда в язык не включается вообще всё, что может понадобиться (иначе получается PL/1 или Ada, которые целиком не изучит никто), а механизмы для расширения. Комплексный тип внедряется с помощью таких механизмов, библиотечно. Это хорошее решение, потому что позволяет в самом языке описать нужные вещи. Это примерно как Oberon-X, для тех, кто в теме.

Кроме того, веришь, за 20 лет программинга мне комплексные числа не понадобились НИКОГДА.


вопрос был именно о Фортране и особенности передачи аргументов библиотечным процедурам и функциям.А вот аргументы в Фортран-функции передаются только одним способом: по ссылке. На асме Z80 ты бы так никогда не делал. Неэффективно. Есть риск испортить значение переменных (если функция корявая), т.е. никакой защиты. Надёжность страдает.


в чем именно уникальность реализации Фортрана для PDP ) Хотя - некоторые вещи не стареют и со сцены не спешат уходить )Ну, меня ЯП интересуют в первую очередь в соотношении минимализма к идеалу, и если ты спросишь, имеет ли смысл в наше время работать на Фортране (хотя бы для RT-11), я скорее посоветую Паскаль. Кстати, есть ведь ещё и Modula-2 для PDP-11. Есть и Active Oberon, только это закрытая разработка (https://habrahabr.ru/post/258993/). К сожалению.

- - - Добавлено - - -

AFZ, допустим, комплексные числа в Фортране есть. А вот операций для работы с матрицами и множествами нету. С прогрессиями. Нативно. То есть, я рад, что в Ф. есть комп. числа, но как язык для использования он меня не устраивает, из-за корявостей.

- - - Добавлено - - -

Уже не говоря про отсутствие работы со строками. ;-)

hobot
08.12.2016, 03:27
Честно говоря, ни разу не видел фортрановской программы, выходящей за рамки FIV
Patron,если не ошибаюсь охотно поделился всеми возможными версиями компиляторов и языков ещё в самом начале,
они (так вышло) немного разбросаны по архиву, но в целом легко ищутся
http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/FortranIV_GromovK/

И по моему очень интересное получается (лось) обсуждение.

AFZ
08.12.2016, 04:56
Кроме того, веришь, за 20 лет программинга мне комплексные числа не понадобились НИКОГДА. Верю. А мне пару раз раз потребовались - для расчетов цепей переменного тока. Первый раз это было где-то в конце 70-х или начале 80-х, тогда я это легко и непринужденно сделал на Фортране-4 Системы-360 (в смысле, ЕС ЭВМ). Второй раз - в начале 2000-х, так я изматерился, делая это средствами Визуальной Студии!..


AFZ, допустим, комплексные числа в Фортране есть. А вот операций для работы с матрицами и множествами нету. С прогрессиями. Нативно. То есть, я рад, что в Ф. есть комп. числа, но как язык для использования он меня не устраивает, из-за корявостей.
Уже не говоря про отсутствие работы со строками. ;-) Работа со строками - это ни разу не вычисления. А для вычислений средств Фортрана более, чем достаточно.

Я, в общем-то, программирующий электронщик. И когда мне надо рассчитать что-то по сколь-нибудь сложной формуле, вместо возни с калькулятором, я предпочитаю по-быстрому накидать программулю, которая не ошибется, в которой, промазав по нужной клавише, не надо переделывать все сначала, которую можно выполнить в цикле раз 20-50 и, просмотрев полученную таблицу выбрать подходящий вариант...

Так вот, сейчас я это делаю, в основном, на Бейсике, а во времена ДВК - Э60 я пользовал и Бейсик, и Фортран, примерно пополам.


я скорее посоветую Паскаль. Кстати, есть ведь ещё и Modula-2 для PDP-11. Настоящие программисты не используют Паскаль! (с) См., например, здесь. (http://zx-pk.ru/threads/25295-prakticheskoe-programmirovanie-v-srede-rt-11-na-assemblere.html?p=893047&viewfull=1#post893047)

form
08.12.2016, 04:58
возможными версиями компиляторов
Компиляторы для RT-11 я выкладывал (последние версии F77 и FORTRA) и патчи Y2K к ним (и патченые дистрибы).
На стакане и вороне тоже оба варианта есть. Но я сам никогда не разбирался в различиях языка. Помню, что в F77 можно константы определять, что компилятор его во время компиляции не пишет названия текущей компилируемой (под)программы и что в случае достижения END, программа молча выходит, а не пишет сообщение об останове. На этом все, что помню про F77 заканчивается :)

AFZ
08.12.2016, 05:01
кода, генерируемого фортраном при вызове фортрановской подпрограммы: Это, как я понимаю, скомпилировано с CODE=THR. Поставь, хотя бы, CODE=EIS, все будет совсем по-другому.

Oleg N. Cher
08.12.2016, 16:18
Настоящие программисты не используют Паскаль! (с)Ты хотел сказать, настоящие коммерсанты ;-) У настоящих программистов давай спросим их мнение о Фортране. ;-) Сам же сказал - электронщик. А я программирующий программист, и выработал мнение: чем дальше от Фортрана и Бейсика - тем лучше.

hobot
08.12.2016, 17:00
чем дальше от Фортрана и Бейсика - тем лучше.

Настоящие программисты не используют Паскаль!
Ребята ) Я хочу просто напомнить, что это не абстрактная тема о программирование вообще,
и уж точно не о правильности выбора того или иного языка программирования.
Это тема о программировании под ОС RT-11 (!) и о программировании на оборудовании DEC PDP
или совместимом.

Я не проф. программист, но по теме могу сказать вот что (частный случай УК-НЦ и любая ДВК с RT-11 на борту),
вот представьте что вам нужно что то написать системное (форматирование дискеты) - вы конечно на МАКРО-11
что то такое напишите. А представьте, что вы пишите например игру, под терминал VT52 (символьную) рогалик
какой-нибудь - неужели вы будете лопатить такой проект на макро? Это не реально. Тут либо Паскаль, либо Си,
либо Фортран (бейсик - запрещаю о нём говорить! объясню почему = системный бейсик слишком специфичный,
вильнюс бейсик полная фигня).

И так я на УК-НЦ выбрал для себя ПАСКАЛЬ+МАКРО11 как связку (http://zx-pk.ru/threads/20444-pascal-macro11-(uknts-dvk).html), поскольку у меня старшие товарищи пользуясь
тем же достигали видимых, реальных результатов, приблизиться к которым мне хотелось.
Поверьте я не встретил ни одного разработчика ПО в Зеленограде в то время кто бы писал на Фортране )))
Ни одного кто бы писал на BASIC-11 и ни одного кто бы писал что-то кроме шуток на вильнюс бейсике.
На Си как видно из архива писали для УК-НЦ, но это тогда мне было не известно (пример софт от OlegH.)

И ещё момент (!) посмотрите архив - все библиотеки со вспомогательными процедурами и функциями
написаны для Паскаля. Был (до сих пор не обнаружен) так же очень правильный спрайтовый движок
для Паскаля или Макро-11 (мог одинакого использоваться и там и там).

Поэтому на уровне хобби и учитывая возможности железок - программисты на Паскале таки писали )))
Паскаль преподавали, а Фортран уже нет. Так же никто не преподавал Модулу (http://zx-pk.ru/threads/22278-modula2-dvk-uk-nts.html) ! Ассемблер приходилось осваивать практически самостоятельно.
В обще школьная программа предпочитала Вильнюсовский Бейсик. А в качестве "инженерного" языка
всё время пыталась подсунуть вам Фокал (http://zx-pk.ru/threads/25802-focal.html) ))) Хотя его УК-НЦ вариант не так уж и плох для вычислений
и инженерной графики ?

- - - Добавлено - - -

Я же писал выше о специфике выбора языка не случайно.
Те задачи которые решает AFZ ему удобнее решить на Фортране или Бейсике.
Быстро и точно для работы. Это и есть практическое (прикладное) программирование.

form системщик ) Он всех отформатирует если что ) Какой уж там Паскаль, хотя
и он Паскаль под MS DOS использовал для чего-то.


Oleg N. Cher, у тебя свои задачи и ты используешь (на чём кстати?) ту среду разработки
которая тебе удобная или принята в конторе.

И по секрету, я знаю что Титус и Patron пишут на Си (могу конечно ошибаться).
эмулятор УК-НЦ написан на Си. Меня исходники на Си пугают например своей нечитабельностью.
Я ничего не понимаю в листинге где одни скобочки )))

- - - Добавлено - - -

PDP-11 тёпленькая и родная потому что 8-миричная разрядная система исчисления однажды впившись в мозг не спешит его покинуть + МАКРО-11 ) Но я то действительно не программист )

Titus
08.12.2016, 17:40
И по секрету, я знаю что Титус и Patron пишут на Си (могу конечно ошибаться).
эмулятор УК-НЦ написан на Си. Меня исходники на Си пугают например своей нечитабельностью.
Я ничего не понимаю в листинге где одни скобочки )))

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

А, и под УКНЦ я пишу на асме, разумеется)

AFZ
08.12.2016, 18:10
А я программирующий программист, и выработал мнение: чем дальше от Фортрана и Бейсика - тем лучше. По всей видимости, тебе не приходится заниматься более-менее серьезными вычислениями. В общем-то, современное программирование к этому не особенно располагает, бОльшая часть типовых задач давно решена, и почти все современное программирование - это, в основном, обработка данных. Текстов. Строк. Манипулирование битами. И т.п. ИМХО.


А представьте, что вы пишите например игру, под терминал VT52 (символьную) рогалик какой-нибудь - неужели вы будете лопатить такой проект на макро? Скорее всего. БОльшая часть игрушек для ДВК-УКНЦ писаны именно на Макро.


PDP-11 тёпленькая и родная потому что 8-ми разрядная система исчисления однажды впившись в мозг не спешит его покинуть Восьмеричная, ты хотел сказать?

Впрочем, я тоже, если надо что-то программировать, программирую на простом Си (не приплюснутом). Ну, или на асме, но это только для мелких контроллеров, вроде AVR или MSP430. Уже для АРМов особо на асме не попрограммируешь, у тех же STM32 банально нет заголовочных файлов описания периферии для асма, только для Си, производитель считает, что на асме для них никто программировать не будет. А Фортран, действительно, умер. Но, в свое время это был лучший язык для программирования именно вычислительных задач. Да, в нем нет строк, обработка текстовой информации в нем поставлена из рук вон плохо, но вычислять на нем было очень удобно - никакие Алголы-Паскали-Модулы и проч. и рядом не стояли!..

hobot
08.12.2016, 19:29
Восьмеричная, ты хотел сказать?
да конечно! извиняюсь, править выше буду, рад что мы друг друга понимаем "смайл"


БОльшая часть игрушек для ДВК-УКНЦ писаны именно на Макро
Графических игрушек да! Это легко объяснить - необходимо максимальное быстродействие и
максимальное использование нюансов каждой железки. А вот символьные игры (я там именно
на это сделал упор) - смотрите сами это либо Паскаль с ассемблером либо Фортран.
Чем "старее" игра - тем более вероятность что исходник Фортрановский. Пример "Адвенчура",
"Звёздный Патруль" и куча ещё символьных игр - фортран, "Страна Монстров" писалась на Паскале
(Зеленоградский вариант от Maple), ТЕТРИС Пажитнов на Паскале писал - см. интервью с автором.


А Фортран, действительно, умер.


почти все современное программирование - это, в основном, обработка данных.
Разные уровни, разные задачи. Зачастую программируют уже просто на уровне скриптов внутри готового движка
фактически все среды разработки визуальные, разве нет?
По поводу вычислений, электрических цепей и мат.моделирования - сегодня это опять же работа в программах,
а не написание оных с нуля )

- - - Добавлено - - -

Я вот совершенно не в курсе что сейчас преподают школьникам (именно в школах) по предмету Информатика
и да же не знаю точно как он называется, но время от времени читаю в инете дискусии педагогов и проф.программистов и их точки зрения на происходящее. В целом рисуется такая картина - чаще всего их учат работать с ПО сами знаете каким.
И всё. Создание и редактирование в MS WORD. Visual Basic - для формул в MS EXEL. Но это не информатика же?

Отсюда всегда приходит примерно один и тот же радикальное предложение по Информатике :
1. Расторгнуть все контракты с Российским представительством мелкомягких на поставку лиценз. ПО для
учреждений до ВУЗовского образования.
2. Учить не работать с ПО от "маленького-мягкого", а основам алгоритмов и проч., постановке задачи (ну в общем понимаете)

И далее логически вытекающие отсюда вещи -
О чём чиновники от образования и слышать конечно не хотят.

nzeemin
08.12.2016, 20:07
эмулятор УК-НЦ написан на Си.
На самом деле, на Си++.
Реально же виртуальность там только в одном месте -- когда процессор вызывает диспетчер памяти, для диспетчеров ЦП и ПП разная реализация.
По идее это место можно заменить на полноценную эмуляцию устройств на шине и соответственно будет просто Си с плюсами.

- - - Updated - - -


А у ассемблера MACRO-11 каким блоком это ограничение вводится? ;)
Может все-таки дело в формате символьных таблиц стандартного OBJ файла для PDP-11?

Когда копал LINK11, я там видел что для всех имён используется упаковка RAD50, в результате чего 6 символов упаковываются в 4 байта (двойное слово), и со всеми именами работают в виде таких двойных слов, что довольно удобно в условиях не такой уж большой памяти -- может быть причина в этом.

hobot
08.12.2016, 20:37
может быть причина в этом.
А файловая система 6.3 ? )

Oleg N. Cher
08.12.2016, 21:30
Oleg N. Cher, у тебя свои задачи и ты используешь (на чём кстати?) ту среду разработки которая тебе удобная или принята в конторе.В жизни приходилось пользовать много чего, и Visual Basic, и Delphi, и Visual C++, в последнее время больше программирую как хобби - FreePascal и различные диалекты Oberon. Я знаком с одним программером, который работал на Microsoft. Он утверждает, что в их офисах слово Паскаль было ругательством и табу. Но сегодня он на пенсии и с удовольствием развивает компилятор Оберона. Так-то.

Фортран - это исторически первый язык, на котором можно было записывать формулы в их привычном виде, до этого на автокодах и ассемблере формулы приходилось кодировать элементарными командами. Но был язык APL, который имел тоже очень ёмкий и мощный аппарат для вычислений. AFZ использовал Фортран как программируемый калькулятор для расчётов своей электроники, но если бы ему довелось делать крупные многоуровневые проекты, да ещё и коллективно, он бы понял недостатки Фортрана. В сущности вопрос упирается в то, можно ли и нужно ли использовать Фортран сегодня? Или есть другие средства, получше. (и то же самое, но для PDP-11) Что совсем не один и тот же вопрос. Ну а про меня знаете, я оберонщик. ;-)

AFZ
09.12.2016, 07:57
AFZ использовал Фортран как программируемый калькулятор для расчётов своей электроники, но если бы ему довелось делать крупные многоуровневые проекты, да ещё и коллективно, он бы понял недостатки Фортрана. Вообще-то я принимал участие в крупных коллективных проектах. Программировали на языках и ЭВМ: Автокод "Инженер" ЭВМ "Минск-22", Фортран и асм ЭВМ "Минск-32", Фортран и асм ЕС ЭВМ. И главный недостаток Фортрана - статичность массивов - я прекрасно знаю, для его преодоления приходилось серьезно изощряться на асме. Других языков на этих ЭВМ [не считая Кобола и (на ЕС ЭВМ) чудовищного PL/I] в то время просто не было.

А в 83-м я сменил род деятельности, ушел "в науку". Конкретно - занялся экспериментальной установкой на базе Э-60. Мы ее (установку) сами сочиняли - и схемы, и платы, и софт, соседнее подразделение на ней экспериментировало, приносило пожелания к исправлениям и все сначала.

Да, программировали только на асме, Э-60 у нас были только в перфоленточной комплектации, хоть мы и дополнили их терминалами ВТА-2000-10 и кассетными НМЛ СМ 5211. Ну, а что посчитать - BASIC или QUASIC (тоже перфоленточный, я его этой весной выкладывал). И только в 87-м (вроде-бы, точно уже не помню) у нас появилась одна Э-60 с дисками и RT-11. А с ней два новых языка: Паскаль и Си. Я, естественно, тут же попробовал оба, Паскаль для RT-11 мне категорически не понравился, а на Си я таки склепал пару проектов, но уже позже, в самом конце 80-х и не на Э-60, а на ДВК. А те экспериментальные проекты так и остались на асме, к этому времени софт если и трогали, то изредка и только по мелочам.

А в общем, интересное было время...

form
09.12.2016, 08:08
а на Си я таки склепал пару проектов
Ну DECUS C тоже смотрится довольно убого. По сути древний K&R времен когда сам C еще не сформировался в язык :)
Есть правда родной PDP11 C, весьма ANSIфицированный, но в союзе его скорее всего никогда никто не видел, да и программы он умеет делать только для mapped систем.

Андрианов Игорь
09.12.2016, 09:35
Достаточно много приходилось писать на Э-60 с разными терминалами типа 15ИЭ и Видеотонов, в т.ч. простенькие текстовые игрушки - только макро11!
Вычислительные задачи писались все только на Фортране, после перехода на писюки традиция с вычислительными задачами сохранилась и не только и-за огромного кол-ва наработанных библиотек, но из-за явного превосходства в скорости вычислений с плавающей точкой. Для лаборатории в которой я работал это было очень критично, т.к. программы считали сутками (метод Монте-Карло) и я специально переписывал программы на Паскаль и Си для проверки скорости вычислений, в итоге победил (тогда) - Фортран NDP32 (был такой транслятор для PC), причем отличия были очень существенные!
Простенькие численные методы обычно писались на Бейсике т.к. ученые, которые это делали, не знали что можно было понадувать щеки и порассуждать о красоте языков программирования :)

AFZ
09.12.2016, 09:52
Ну DECUS C тоже смотрится довольно убого. Ну, в общем-то, да. Тем не менее, удалось даже сваять кое-какую обработку данных. Впрочем, некоторое время спустя, ту же обработку данных я склепал на ДИАМСе, было в 10 раз проще и надежнее.

form
09.12.2016, 10:06
удалось даже сваять
Ну возможностей-то у него хватает. TCP/IP для RT-11 вон почти весь на нем написан :)

- - - Добавлено - - -


На самом деле, на Си++.
А вот интересно было бы пофантазировать в эмуляторе на тему что будет если CPU перевести на ВМ3. PPU перевести так просто не получится - там в коде прошивки есть словные обращения к нечетному адресу (которые из-за способа прикрутки параллельного порта такими и должны быть), да и не нужно. А вот CPU было бы интересно сделать с MMU :)

AFZ
09.12.2016, 10:16
Вычислительные задачи писались все только на Фортране Вот-вот, и я о том же! Уж во воемена PDP-11 - железно: вычисления - Фортран, логика, манипулирование битами и пр. управление - асм, обработка данных - ДИАМС, остальное - от лукавого!

- - - Добавлено - - -


Ну возможностей-то у него хватает. TCP/IP для RT-11 вон почти весь на нем написан А это не порт из ранних Юниксов?

form
09.12.2016, 10:22
А это не порт из ранних Юниксов?
Портом назвать это сложно, но C интерфейс там вроде сделан в стиле UNIXового socket.h

AFZ
09.12.2016, 11:28
там в коде прошивки есть словные обращения к нечетному адресу (которые из-за способа прикрутки параллельного порта такими и должны быть) Коряво, кстати, сделали. Я тоже цеплял к Э-60 эти i8255, но мне такая дурь в голову не приходила, я спокойно бросил младший бит адреса МПИ в воздухе, а выводы А0 и А1 чипа 8255 прицепил, соответственно, к А1 и А2 МПИ. Вернее, не то, что в воздухе, я даже триггер для него не ставил. По К СИА Н у меня в одном триггере 155ТМ7 фиксировался факт обращения к этому модулю (результат лог. И от инвертированного К ВУ Н и частично инвертированных К ДА12 Н - К ДА03 Н, в смысле кто-то из них инвертирован один раз, кто дважды, так я набирал адрес), в двух других триггерах запоминались К ДА02 Н и К ДА01 Н, в качестве адресных битов для 8255, а для К ДА00 Н триггера не выделялось, четвертый триггер 155ТМ7 я пользовал где-то еще.

Вследствие этого адреса регистров 8255 у меня были 1хххх0 - регистр A, 1хххх2 - регистр B, 1хххх4 - регистр C и 1хххх6 - регистр управления. И никаких дурацких обращений к слову по нечетному адресу.

form
09.12.2016, 11:37
Коряво, кстати, сделали.
Да не то слово!

Oleg N. Cher
09.12.2016, 17:34
Паскаль для RT-11 мне категорически не понравилсяЗначит мнение о языке сложилось на основе именно той реализации?

А мне Pascal/Fast для УК-НЦ, напротив, понравился. Но, видимо, дело в том, что я не делал на нём крупных проектов. И вообще начал заниматься программированием на Спектруме, где не было никакого Фортрана.

hobot
09.12.2016, 19:31
недостаток Фортрана - статичность массивов
http://forum.ixbt.com/print/0026/034853.html
И что же вам так не понравилось в OMSI PASCALе ?
Я вот до сих пор "для себя" пишу на нём и меня радует и читабельность кода и малый размер исполняемых
программ на выходе ))) А то что не реализовано в нём допиливается внешними функциями и процедурами +
макровставки - это же как изюмчик )))


А вот CPU было бы интересно сделать с MMU
Смело! ) Олег, почему молчишь где обсуждали новодел УК-НЦ? ))) Только объём памяти то страшно маленький всё равно? Мне вот что подумалось (на фоне новостей от тебя про HECNET), ты бы мог нарисовать (в общих чертах)
HECNETовский СА для УК-НЦ на замену штатному, ведь TCP/IP под RT-11 есть?


Значит мнение о языке сложилось на основе именно той реализации?
У меня да! И после БЕЙСИКА ВИЛЬНЮС - это был настоящий взрослый язык на котором можно было писать
под настоящую ОС (RT-11 которая), я не знаю как может не понравиться OMSI PASCAL )


Достаточно много приходилось писать на Э-60 с разными терминалами типа 15ИЭ и Видеотонов, в т.ч. простенькие текстовые игрушки - только макро11!
Доброго времени (вечера)! А можно с этого момента подробнее (конкретнее) о самом ПО ? Не осталось ли что-то
на каких либо носителях, есть ли шанс что вы поделитесь для общедоступного архива если сохранили что-то и
ещё момент, момент в архиве есть ваши игры или программы в разделе ДВК? )

Спасибо.

- - - Добавлено - - -


А мне Pascal/Fast для УК-НЦ, напротив, понравился.
Знаешь что самое разочаровывающее в этом проекте, ребятам дали инструмент который удобный и
довольно качественно сделан, но вот даже игра угадай число от 0 до 10 на выходе займет 40-50 блоков )
Для машинки с ресурсом младших ДВК и УК-НЦ (БК0011М) - это не приемлемо. Для меня он стал проводником
в ТурбоПас на ПЦ уже под досом )

- - - Добавлено - - -

Если не ошибаюсь - Русская версия текстового редактора NED на Паскале написан, возможно и NYS то же на паскале (скорее всего).

form
09.12.2016, 19:36
Смело! ) Олег, почему молчишь где обсуждали новодел УК-НЦ? ))) Только объём памяти то страшно маленький всё равно? Мне вот что подумалось (на фоне новостей от тебя про HECNET), ты бы мог нарисовать (в общих чертах)
HECNETовский СА для УК-НЦ на замену штатному, ведь TCP/IP под RT-11 есть?
Я просто не читал где его обсуждали :)
TCP/IP есть, но к HECnet он никак не относится - там DECnet используется. DECnet для RT-11 есть, простенький, но только для XM, но найти дистрибутивов не удалось пока никому в округе. TCP/IP, к слову, тоже требуют для более-менее нормальной работы XM/ZM монитора. Хотя для unmapped мониторов есть упрощенный вариант в виде только клиентской части. Впрочем и в XM/ZM все не так радужно - в силу организации RT-11, а также в силу организации программ из комплекта, после загрузки TCP/IP stack + FTP server получаем систему в которой можно только небольшие программы запускать (или программы с оверлеями в расширенной памяти и маленьким корневым сегментом - KEX например). Тут куда лучше дело в TSX+ обстоит (к слову, TCP/IP для него тот же самый, только переделан именно под TSX. В Википедии есть информация о том, что в последнем TSX+ V6.50 есть свой TCP/IP, но это не так - видимо перепутали с TSX-32 [система от них же для PC на 386 и выше]).
Ну и наконец TCP/IP для RT-11 поддерживает только Ethernet, никаких SLIP, PPP и тому подобного там нету...
В теории к живому УКНЦ можно в слот СА воткнуть DEQNA/DELQA, но все-равно остаются вышеописанные ограничения unmapped систем.

hobot
09.12.2016, 19:38
Судя по архиву (и на форуме эти люди присутствуют изредка) больше всего исходников и программ на Си
1. OlegH. - там как минимум 1 игра и целая куча системных программ, но драйвера он конечно делал на макро-11.
2. oldskool - (один из главных доноров для архива, поскольку сохранил домашнюю библиотеку дискет и
поделился ими в самом начале ещё) - то же очень много попыток написания именно на Си.

А вот СУПРИС Калашникова (http://zx-pk.ru/showpost.php?p=639995&postcount=212) помните? Он же с исходников - ПАСКАЛЬ ! )))

form
09.12.2016, 19:42
домашнюю библиотеку дискет
Кстати надо бы тебе отправить дискеты которые у меня валяются - там что-то для прошника и еще какие-то подписанные RT-11. Мне их уже не на чем читать :)

hobot
09.12.2016, 19:45
В теории к живому УКНЦ можно в слот СА воткнуть DEQNA/DELQA, но все-равно остаются вышеописанные ограничения unmapped систем.
А можно хотя бы часть проблем решить какой-нибудь программой управления прошитой на самом HECNET адаптере для
УК-НЦ и уже понятно, что если делать такой новодел - ему и ПО сочинять придётся (но пока ещё есть люди кто умеет
"системное" для PDPlike писать-сочинять "смайл с моргалкой")

- - - Добавлено - - -


там что-то для прошника
ПРОШНЫЕ лучше anasan'е ))) У меня же совсем тупой набор 5" дисковод и читалка-писалка-форматилка ориентированные
на формат МY )))

form
09.12.2016, 19:53
А можно хотя бы часть проблем решить какой-нибудь программой управления прошитой на самом HECNET адаптере для
УК-НЦ и уже понятно, что если делать такой новодел - ему и ПО сочинять придётся (но пока ещё есть люди кто умеет
"системное" для PDPlike писать-сочинять "смайл с моргалкой")
Сложно интерпретировать написанное, но в общем случае через С2 можно подключить к DECnet по DDMCP протоколу (эмулятор ДВК который висит в online именно так и подключен за неимением других вариантов). Но опять таки - нужна mapped система для нормального подключения. То есть ВМ3 процессор в основной части :)

hobot
09.12.2016, 19:59
Но опять таки - нужна mapped система для нормального подключения. То есть ВМ3 процессор в основной части ага и ещё памяти поднасыпать и залить полноценный RSX какую там версию ) Это уже не УК-НЦ,
но хорошо, что "теоретический" ДВК с ВМ3 способен на такое подключение\использование !!! )
УК-НЦшка лучше тогда цеплять к ДВК4 с RSX который уже подключен к внешней сети? Разве нет? Ведь сеть такая вроде нативная там и выдумылвать (почти?наверное) не надо??? Я не знаю употребимо ли тут понятия "шлюз" для ДВК ?

form
09.12.2016, 20:06
Это уже не УК-НЦ
Ну потому и предложил смоделировать ситуацию. Ведь центральный процессор по сути не завязан именно на ВМ2 - туда можно и ВМ3 воткнуть. Разумеется все "железо" которое держит ПП останется 16-битным, и это нужно учитывать. Но в общем и целом вариант имеет право быть :)

ДВК с ВМ3 способен на такое подключение\использование
Способен - в этом проблем нет.


Я не знаю употребимо ли тут понятия "шлюз" для ДВК ?
Можно подключить по С2 что-то, подключенное к сети и зайти на него в рамках обычного проводного терминала и оттуда что-то делать (при этом доступны стандартные функции XL/VTCOM/TRASF из RT-11 [есть программа TRANSFER для передачи файлов в/из RSX в таком варианте]).
Но это все же не подключение к сети, а просто работа в виде терминала.
В отличие от эмулятора ДВК который сейчас полноценно виден во всем HECnet и может быть подключен командами RMT, SET HOST, SET /HOST и доступен для стандартных средств работы с файлами :)

Андрианов Игорь
11.12.2016, 14:43
http://forum.ixbt.com/print/0026/034853.html

Доброго времени (вечера)! А можно с этого момента подробнее (конкретнее) о самом ПО ? Не осталось ли что-то
на каких либо носителях, есть ли шанс что вы поделитесь для общедоступного архива если сохранили что-то и
ещё момент, момент в архиве есть ваши игры или программы в разделе ДВК? )

Спасибо.

Было это последний раз 26 лет назад, конечно ничего не сохранилось вообще, т.к. тогда казалось, что переход на IBM PC будет окончательным и бесповоротным (так, кстати и получилось). Вначале долго плевался от писишного асма с сегментацией, параграфами и т.п., за год он него по-тихому отказались полностью перейдя на ЯВУ - средства разработки от Борланда и MS оказались очень удобными, по сравнению со всем тем, что трогал до этого. В те времена по-моему никто (из тех, с кем был знаком) не задумывался о сохранении наработок на асме PDP-11.
ДВК видел только из далека, и по тогдашним ощущениям (от ДВК-3) они отличались крайней ненадежностью (особенно дисковые системы), стойки Э-60 и СМ-4 работали по стабильнее.
Да и вообще, в моем окружении бытовало мнение, что переход на тайваньские экстишки и эйтишки было просто счастьем после постоянных проблем с советской техникой, разработка программ, кстати, резко ускорилась.
Об УКНЦ узнал только после 2010 года :-)

form
11.12.2016, 16:19
Вначале долго плевался
Мне было проще - я вернулся со службы в СА (не путать с сетевым адаптером УК-НЦ ;)) подготовленным :)
Пока я там бороздил просторы нескольких УК-НЦ, закупленных на весь МВО, в большом мире появились суперкомпьютеры IBM PC (как их все называли, хотя именно реализации, называвшейся так (в то время это еще было точное название модели), я так и не увидел в принципе. До сих пор. В общем XT это были.). Я - не будь дурак - смотался в Москву (недалеко она была) да купил книжек умных по тамошнему ассемблеру. Тут-то у меня и отвисла челюсть: наверное такое же впечатление испытывает водитель лексуса, пересев на оку :)
Стал выяснять у тех, кто уже вкусил счастия, и выяснил, что счастие сие по сути укладывается в два синеньких окошка по разным сторонам экрана и занимает всего-то ничего... И правда ничего - у меня занимало столько же... Правда... Эти окошки у меня были частью довольно навороченного музыкального редактора, а чтобы объем совпал потребовалось доложить операционку (RT-11SJ - это было счастье после "нашего" ФОБОСа) с его основными утилитами, компилятором MACRO-11, линкером, ВИЛЬНЮС/BASIC'ом (его пришлось купить за свои деньги в Зеленограде - тот, что шел в комплекте грузился [и умел работать] только с бытовым магнитофоном) :), редактором чертежей/схем (в нем определялась библиотека элементов и все из них рисовалось), интерактивного процессора наподобии HTML, только динамического (в то время) дабы решать задачи по проведению учений разных, да еще пара программ демонстрации как работает некий котел (хрен знает что это такое, но говорят нарисовал правильно презентацию [в то время правда слова такого не было]) :D
Ну и разумеется исходников всего перечисленного кроме системы, бейсика и обвески системы (тогда мы еще не мечтали о source китах - видели только обычные киты RSX [да-да! ОСРВ, ОСРВМ не видел в глаза! - даже тот, что распространялся повсеместно 11M V4.0 "улучшенный" настолько, что понятие многопользовательской защиты в нем (и так не особо сильное в отличие от M-PLUS) исчезло окончательно - и он предательски назывался RSX-11M :D], RT да РАФОС'а (среди которых был вариант с мультиусерской авторизацией которая легко обрывалась по CTRL/C во время загрузки [речь не про РАФОС/TS, являющийся обычным древним TSX <хотя многие в наше время введены в заблуждение и считают, что это разные системы, и что РАФОС/TS грузился самостоятельно и не требовал для этого других систем в отличие от TSX :)>] - наши хранили "свои" секреты от нас почище чем американцы :)). Ну пара игр еще, написанных тут же для себя :)

- - - Добавлено - - -

Ну и чтобы не выпадать из темы... Интересно кому-нибудь как работать с DECовским табличным парсером (TPARS)? Я его притащил в RT-11, и в последних версиях RSXLIB он уже встроенный. Кто програмил в UNIX может примерно представить что это, взяв за основу слова вроде lex, yacc, bison и тому подобное. Грубо говоря, это инструмент, позволяющий решить от 99 до 100% задач по разбору командных строк или еще чего подобного, не написав ни единой строчки для разбора командной строки - просто нужно описать правила из чего эта самая строка должна состоять :)
Сразу скажу, что я сам далеко не эксперт в этом вопросе и всегда все делал вручную, а те редкие случаи когда все же пользовался этим инструментарием - просто списывал и подправлял на ходу. Так, что сейчас я по сути сам в свободное время изучаю все это, и PRUN V2.0, выложенный в теме про софт УК-НЦ - первая неуклюжая попытка написать правила разбора самостоятельно :)

Андрианов Игорь
11.12.2016, 19:34
Тут-то у меня и отвисла челюсть: наверное такое же впечатление испытывает водитель лексуса, пересев на оку :)
Ну мне было несколько проще т.к. я уже был знаком близко с 86РК и его 8080 асмом, хотя неприятие было конечно сильным.
Очень сильно общее впечатление улучшили Турбо Си и Паскаль, т.к. все-таки разработка на ЯВУ в удобной среде с хорошими средствами отладки + сильно больше ОЗУ сделали свое дело, и да, книжки самой собой - Жорден, Нортон и еще не помню кто, причем все это в виде файлов а потом еще и распечаток. Ну и особую роль сыграли возможности по построению интерфейса через прямой вывод в видеопамять (зелененькие терминалы сильно тогда поднадоели, это сейчас на них тянет :)).
У нас стояли стойки Э60 (по восемь блоков в каждой кажется) с подключенным диском от СМ4, Рафос с FB соответственно. Рядом стояла Э79 с RSX, но там вроде только фортран использовали, до асма дело не доходило вообще.

Возвращаться (поностальгировать) к PDP-11 стоит только из-за асма, который был жемчужиной среди других систем команд, все остальное там было ИМХО вполне обычным (и Паскаль и Фортран, и Бейсик).

Vamos
11.12.2016, 20:25
Возвращаться (поностальгировать) к PDP-11 стоит только из-за асма, который был жемчужиной среди других систем команд, все остальное там было ИМХО вполне обычным (и Паскаль и Фортран, и Бейсик).
Ню, а про motorola забыли...

Андрианов Игорь
11.12.2016, 20:32
Как говорили у нас офицеры на военке - "плохо когда не знал да еще и забыл" :)
Первый раз увидел 68K в модеме Зиксель 1496Е, вынимать не стал :)
Далее - в Палмах (до сих пор три штуки в тумбочке лежат), до программирования на асме дело уже не доходило - прошли времена асма.

AFZ
11.12.2016, 22:32
И что же вам так не понравилось в OMSI PASCALе ? Тогда? Тормознутость и чудовищный объем Run-Time-системы. Я по-простому, взял несколько учебных задач, типа тех, что студентам дают и составил по ним программы и на Паскале, и на Си. Полученные .SAV-файлы из-под Паскаля оказались чуть ли не вдвое больше, чем из-под Си. Одна из задач была "думающей", так паскальная реализация "думала" чуть ли не вдвое дольше, чем сишная. Учитывая, что часть задач планировалась для исполнения на бездисковых машинках с малым объемом памяти, Си более-менее годился, а Паскаль был отправлен в пешее эротическое путешествие.

А Си я тогда выучил как следует и году в 89-м склепал на нем пару проектов. Позже, когда пришлось программировать на писюках, я так и не смог преодолеть рвотный барьер и освоить писюшный асм. Что, в общем-то и неудивительно: после совершенно великолепной архитектуры PDP-11 и ее не менее великолепного MACRO, программировать в кодах этого убожества 8086... Зато без вопросов пошло программирование на Си. Да, я слышал, что Паскаль для писюков в те времена тоже был очень даже приличным, но на хрена он мне нужен, когда я уже хорошо знаю Си? :)


В сущности вопрос упирается в то, можно ли и нужно ли использовать Фортран сегодня? Или есть другие средства, получше. (и то же самое, но для PDP-11) Что совсем не один и тот же вопрос. Ну а про меня знаете, я оберонщик. ;-) Сегодня, кстати, вопрос о языках программирования стоит несколько в другой плоскости. В наши суровые времена, основные языки программирования - Си простой, Си приплюснутый и Ява - хоть под винды, хоть под линюхи, хоть под макось, хоть под Андроид или i-OS. Это компьютеры и мобильные устройства. Еще программируют микроконтроллеры, так там, опять же, СИ простой и Си приплюснутый. Явы, правда нет, зато для контроллеров иногда еще применяется асм. Всё! Остальные языки программирования вымирают, как мамонты.


Учить не работать с ПО от "маленького-мягкого", а основам алгоритмов и проч., постановке задачи (ну в общем понимаете) Может быть. Только вот учить молодежь программировать на Паскале категорически не следует - ни в школе, ни в Вузах. Не надо учить молодежь мёртвым языкам.

- - - Добавлено - - -


Возвращаться (поностальгировать) к PDP-11 стоит только из-за асма, который был жемчужиной среди других систем команд,

Ню, а про motorola забыли... Кстати, у микроконтроллеров MSP-430 от техасских инструментов система команд довольно похожа на любимую PDP-11. Асм, правда, сделали несколько коряво, надо было поглядеть на Макро-11, перед тем, как сочинять своеё, тем не менее...

form
11.12.2016, 22:43
Возвращаться (поностальгировать) к PDP-11 стоит только из-за асма, который был жемчужиной среди других систем команд
Иногда это полезно ради оплаты в $1000 за 5 минут работы чужими руками - когда просто говоришь что нужно сделать :)
Увы, не часто такое счастье приваливает :)

hobot
12.12.2016, 01:32
Возвращаться (поностальгировать) к PDP-11 стоит только из-за асма


после совершенно великолепной архитектуры PDP-11 и ее не менее великолепного MACRO

В силу того, что я не осваивал ассемблер настолько сильно и не являюсь программистом, напишу в какой программе под RT-11 на самом деле в настоящий момент остро нуждается инициативная группа в моём лице.

Предистория и "Новейшая история":
В начале 90-х, когда УК-НЦ стоял у меня дома в качестве основного домашнего компа [принтер при нём и два кармана 80-дорожек, что ещё надо? ПО было (см. архив) ] + парочка разнокалиберных (8 и 16 бит) игровых приставок чисто для игр, всё же моим родным хотелось и в тетрис поиграть и в "Сталкера" и в Покер на костях, но вот RT-11 для них
не была "дружелюбной средой". Первое время я просто запили дискету с играми и моноэкранным файловым менеджером, но быстро выяснилось, что это не панацея - потому что даже не все игры из менеджера по кнопочке нужной работали, бывали глюки. Шпоргалка типа "RUN <имя файла>" требовала знать имя файла - то же кстати препятствие ))) Ведь если надо было что то напечатать (текст или рисунок) это делал я. В библиотеке игрушек
разбирался то же я, и команду DIR .SAV/BRI/ALP знал то же только я. )))

Так мне пришла в голову простая идея использовать "чужую" (читай - не свою!) разработку для создания игрового меню, её же я применил и недавно нарисовав с ходу пяток тематических дискеток работающих по схеме
ЗАГРУЗКА СТАРТ RT-11
ЗАГРУЗКА СТАРТ ДРАЙВЕРА ЗАПУСКА ПРОГРАММЫ С ИГРОВЫМ МЕНЮ
Программу с игровым меню я написал на Паскале, а выбранные игры она запускает директивой .CHAIN
Когда происходит КОНЕЦ ИГРЫ - Драйвер запуска игрового меню не в монитор пользователя выкидывает,
а запускает ИГРОВОЕ МЕНЮ - и так по кругу )))

Таких драйверов для запуска приложения по кругу было несколько, был PW.SYS, JS.SYS и ещё какой-то.
Они использовались и входили в поставку файловых менеджеров типа SCE*. или MFP.
НО!!! У них есть дополнительный (уже и тогда совершенно не нужный функционал - установка пароля на
момент загрузки драйвера где то в буточном секторе дискеты, это штука легко обходится открывание крышки(6022)
или рычажка защёлки-опуск. головку(любой правильный 5" дисковод ) и после ошибки чтения защёлку закрываем
и успешно грузимся дальше.

ТЗ: Я предлагаю нашим профи помочь в создании более совершенного драйвера по типу JS.SYS,
а именно
1.Программа должна по команде SE JS ON запускать прописанный внутри неё исполняемый файл - без глюков как классический JS.SYS
2.Желательно имя запускаемого файла сделать параметром типа SE JS SFN(Start File Name)=/тут шесть символов имя файла - проверка на правильность не требуется, на совести оператора!!!/ у старого JS имя файла надо править при помощи DESSа к примеру
3.Не мешать запущенной программе работать и передавать управление приложениям директивой
.CHAIN
4.По завершению этих приложений снова стартовать прописанный SFN





01:04:18 12-Дек-2016, Понедельник

JS .SYS 2 07-Jun-1993

File name: "DK:JS.SYS", size: 2. blocks.
Release = JR , Version(s) = 20306 22604 8224 14880 8320 10794 18720 30318 27745
25705 2573 20233 25454 8293 28525 25970

*** Runable program
Transfer address 001260
Stack top 001000
High limit 001734 = 494. words
Job status word 000000 = [ ]

*** Handler data structure
Handler size 168. bytes
Sequential device
Device code 0
Sysgen options 000004 = [ TIMIT$ ]
CSR address 000000
Vector 374
* Installation code for DATA SYSTEM
* Bootable device
H.BPTR=047514, H.BLEN=17473.b, H.READ=047111

*** Set options table:
ON entry 626
OFF entry 626
SYSGEN entry 604
INFORM entry 626
NEWPAS entry 472
[no] PASS entry 562
REPEAT = decimal entry 574
*


Как-то так это всё работает )

http://pic.pdp-11.ru/thumbs/jssys.png (http://pic.pdp-11.ru/?v=jssys.png)

http://pic.pdp-11.ru/images/jssys.png



Буду рад любому ответу или обсуждению по возможности создания подобного драйвера.
:rolleyes_std:

form
12.12.2016, 18:29
Может кому пригодится. В RT-11 начиная с версии 5.02 появилась возможность обрабатывать команды раньше чем их обработает система. Сначала это была недокументированная фича которая использовалась в RTEM-11 для добавления опций в стандартные команды COPY, CREATE, MOUNT, DISMOUNT и другие, вызывая при необходимости утилиты FIP или JOAT вместо родных. При этом команда попадает сначала в программу UCF.SAV, а уже она решает что с командой делать дальше.

Начиная с RT-11 V5.6 возможность использования UCF стала документированной, и появилась команда SET CLI [NO]UCF для ее включения/выключения.

Ниже приведен пример программы UCF которая при запуске вручную просто переключает состояние UCF/NOUCF (и печатает текущее состояние после переключения), а при получении команды просто печатает сообщение и отдает команду в KMON.
.TITLE UCF -- ПРОЦЕССОР КОМАНД ПОЛЬЗОВАТЕЛЯ
.IDENT /V01.00/

$JSW =: 44 ;СЛОВО СОСТОЯНИЯ ЗАДАНИЯ
SPXIT$ =: 40 ;БЕТ СПЕЦИАЛЬНОГО ВЫХОДА

$INDDV =: 426 ;СМЕЩЕНИЕ ДО УКАЗАТЕЛЯ НА INDDEV
;ПРЯМО ПЕРЕД INDDEV В RMON ИДУТ
;БАЙТЫ CLICFG И CLITYP

UCF.ON =: 1 ;БИТ UCF ON
UCF.KM =: 200 ;БИТ ПЕРЕДАЧИ КОМАНДЫ В KMON

.MCALL .EXIT,.GVAL,.PEEK,.POKE ;СИСТЕМНЫЕ МАКРОКОМАНДЫ
.MCALL .PRINT ;

UCFEP:: .GVAL #AREA,#$INDDV ;ПОЛУЧАЕМ АДРЕС INDDEV
TST -(R0) ;ПОЛУЧАЕМ АДРЕС CLIFLG
MOV R0,R5 ;СОХРАНЯЕМ
.PEEK #AREA,R5 ;ПОЛУЧАЕМ ЗНАЧЕНИЕ CLICFG/CLITYP
MOV R0,R4 ;СОХРАНЯЕМ
;ПРИ ЗАПУСКЕ UCF ДЛЯ ОБРАБОТКИ
;КОМАНДЫ БАЙТ CLITYP СОДЕРЖИТ 0
BIT #^C377,R4 ;ПРОГРАММА ЗАПУЩЕНА КАК UCF?
BEQ 30$ ;ДА

;ПРОГРАММА ЗАПУЩЕНА ВРУЧНУЮ. ПЕРЕКЛЮЧАЕМ СОСТОЯНИЕ UCF ON/OFF И ВЫХОДИМ.

MOV #UCFEN,R1 ;ПРЕДПОЛАГАЕМ, ЧТО UCF ВЫКЛЮЧЕН
ASR R4 ;ТЕКУЩЕЕ СОСТОЯНИЕ => C
BCC 10$ ;CC - UCF ВЫКЛЮЧЕН (БУДЕТ ВКЛЮЧЕН)
MOV #UCFDI,R1 ;CS - UCF ВКЛЮЧЕН (БУДЕТ ВЫКЛЮЧЕН)
10$: ROL R0 ;ПЕРЕКЛЮЧАЕМ СОСТОЯНИЕ
INC R0 ;
ASR R0 ;
ROL R4 ;
.POKE #AREA,R5,R4 ;ЗАПИСЫВАЕМ CLIFLG ОБРАТНО
.PRINT #IUCFS ;ПЕЧАТАЕМ СООБЩЕНИЕ
.PRINT R1 ;
20$: CLR R0 ;ДЕЛАЕМ СБРОС ПРОГРАММЫ
.EXIT ;ВЫХОД

;ПРОГРАММА ЗАПУЩЕНА КАК UCF. ПО АДРЕСУ 510 ЗАПИСАНА ДЛИНА КОМАНДЫ.
;САМА КОМАНДА РАСПОЛАГАЕТСЯ В ПАМЯТИ НАЧИНАЯ С АДРЕСА 512.
;UCF МОЖЕТ ОБРАБОТАТЬ КОМАНДУ САМОСТОЯТЕЛЬНО ИЛИ СФОРМИРОВАТЬ КОМАНДУ
;КОТОРАЯ БУДЕТ ВЫПОЛНЕНА KMON. В ПОСЛЕДНЕМ СЛУЧАЕ НУЖНО УСТАНОВИТЬ БИТ
;UCF.ON В БАЙТЕ CLICFG (ТАК ЖЕ СТОИТ УСТАНОВИТЬ БИТ UCF.ON - В RT-11
;ВЕРСИЙ 5.02-5.05 ЭТОТ БИТ ОЧИЩАЕТСЯ ПРИ ПЕРЕДАЧИ КОМАНДЫ В UCF, ТЕМ
;САМЫМ ВЫКЛЮЧАЯ ЕГО) И БИТ SPXIT$ В $JSW.
;
;В НАШЕМ СЛУЧАЕ МЫ ОСТАВЛЯЕМ ПЕЧАТАЕМ СООБЩЕНИЕ И ПЕРЕДАЕМ КОМАНДУ В KMON
;БЕЗ ИЗМЕНЕНИЙ.

30$: BIS #UCF.KM!UCF.ON,R4 ;ПЕРЕДАЕМ КОМАНДУ В KMON
.POKE #AREA,R5,R4 ;И ВКЛЮЧАЕМ UCF
.PRINT #UCFKM ;ПЕЧАТАЕМ СООБЩЕНИЕ
BIS #SPXIT$,@#$JSW ;ВЫПОЛНЯЕМ ВЫХОД С ПЕРЕДАЧЕЙ
BR 20$ ;КОМАНДЫ

AREA: .BLKW 3 ;БЛОК EMT

IUCFS: .ASCII /?UCF-I-UCF command processing is now /<200>
UCFEN: .ASCIZ /ENABLED/
UCFDI: .ASCIZ /DISABLED/
UCFKM: .ASCIZ /?UCF-I-Passing command to KMON/

.END UCFEP

Работа программы:
.UCF
?UCF-I-UCF command processing is now ENABLED

.E
?UCF-I-Passing command to KMON
040000
.E
?UCF-I-Passing command to KMON
040000
.UCF
?UCF-I-Passing command to KMON
?UCF-I-UCF command processing is now DISABLED

.E
040000
.

Кстати, о команде E (а так же B, CLOSE, D, GET, SAVE, START). Эти команды по понятным причинам не будут нормально работать при включенном UCF.

- - - Добавлено - - -


Буду рад любому ответу или обсуждению по возможности создания подобного драйвера.
А нельзя ли в двух словах написать что собственно требуется, чтобы не перечитывать все? :)

Alex_K
12.12.2016, 21:18
Желательно имя запускаемого файла сделать параметром типа SE JS SFN(Start File Name)=/тут шесть символов имя файла
Это невозможно, после знака равенства может быть десятичное или восьмеричное значение,но никак не строка символов.

hobot
13.12.2016, 00:51
Это невозможно,
Хорошо, пусть будет жёстко прописанное в исходнике имя файла, любое JSUNIT.SAV, ведь потом DESSом править
не проблема, либо настройку имени приложения для запуска оформить другим способом (внутренним запросом).
R JS.SYS
#fn=filename.typ
допустим.

- - - Добавлено - - -

form, открой только вкладку ТЗ там в двух словах.
Надо что бы пользователя не в систему после игры выкидывало, а запускался заранее
прописанный в драйвере исполняемый файл. Вот.

form
13.12.2016, 02:04
Надо что бы пользователя не в систему после игры выкидывало, а запускался заранее
прописанный в драйвере исполняемый файл. Вот.
А чем стартовый файл не устраивает?

hobot
13.12.2016, 02:20
А чем стартовый файл не устраивает?
Он не обеспечивает цикл перезапуска.
Гляди как работает используемый мною стар.добр.JS.SYS в случае, если программа для запуска не обнаружена

http://pic.pdp-11.ru/thumbs/20161212231707828.png (http://pic.pdp-11.ru/?v=20161212231707828.png)

Но при этом он позволяет после запуска прописанного в нём "оболчки",
что бы из неё с помощью директивы .CHAIN другой файл запускать и так до тех пор
пока мы не должны вывалиться в монитор. Но вместо монитора он снова
подсключается и снова запускает то что мы хотим крутить по кругу (допустим стартовое меню).

Вот.

form
13.12.2016, 02:22
Он не обеспечивает цикл перезапуска.
IND ;)

hobot
13.12.2016, 02:35
К тому же неумелый пользователь может легко порушить стартовый файл, а лезть и копаться внутри .SYS файла
обычный человек не будет, тем самым пользователь всё дальше от низкого уровня RT-11 может работать только с
перезапускаемой программой.

- - - Добавлено - - -


IND
А вот теперь поставь на весы :

Хобот учит IND c нуля = неизвестно что получиться / двухблочный JS.SYS )))
---------------------------------------------------------------------------------------

Я могу и старый драйв. использовать, но в нём лишний функц, а во вторых
мне более интересно как JS.SYS так хитро всех обхетряет ! )))
Исходников его никогда не видел - согласись мощное решение учитывая размер и
бесперебойность в работе.

- - - Добавлено - - -

Просто его написал человек знающий тонкости RT-11 и ассемблер.

- - - Добавлено - - -

В оглавлении архива JS.SYS легко ищется, другой момент дизас. мне не даст ничего, а вот ты (например)
сходу видишь куда и чего он отправляет \ посылает

- - - Добавлено - - -

У IND кстати всё тот же минус - это текстовый сценарный файл - недопустимо !!! )))

- - - Добавлено - - -


У IND кстати всё тот же минус
IND = это если бы речь шла о RT-11 вообще, но тут именно ДВК\УК-НЦ где уже показано,
что такое в принципе возможно.

form
13.12.2016, 02:39
учит IND c нуля
Можно настроить систему при генерации чтобы стартовый командный файл попадал в IND, а там уже сделать что нужно. И саму менюшку собственно в нем и напрограмить :)

hobot
13.12.2016, 02:41
Можно настроить систему при генерации чтобы стартовый командный файл попадал в IND
Я вижу ты все штатные возможности перебираешь, это хорошо )))

А JS.SYS работает с любым уже сгенериным монитором (ПКМ с теми которые актуальны в рамках УК-НЦ \ ДВК).

form
13.12.2016, 02:43
А JS.SYS работает с любым уже сгенериным монитором
Так и IND с любым (ну разумеется если это RT-11 V5). Но думаю у JS те же требования :)

hobot
13.12.2016, 02:57
RT-11 V5 да! Он шёл как раз в комплекте с 5.1 для ДВК и с 5.0 для УК-НЦ
был ещё его практический клон PW.SYS - я его когда то в школе с ДВКашной дискеты домой себе копировал,
но он 1 в 1 ПАРОЛЬ + КОЛЬЦЕВОЙ ПЕРЕЗАПУСК ЛЮБОГО .SAV

- - - Добавлено - - -

Я когда писал про любой - я имел в виду, что мне не приходилось "генерить" с нуля систему что бы игровой сборник
сделать ))) Я просто отредактировал драйвер на нужный мне файл - в том случает - это игровое меню.

form
13.12.2016, 02:58
ПАРОЛЬ + КОЛЬЦЕВОЙ ПЕРЕЗАПУСК ЛЮБОГО .SAV
Так нужно чтобы его нельзя было вообще обойти (как гениальную советскую защиту в рафосе которая обрывалась с помощью CTRL/C в момент загрузки системы)? (запуск драйвера командой SET xx ON этого не оьеспечит сам по себе даже если это будет команда которую сам монитор даст вместо запуска стартового файла)

hobot
13.12.2016, 03:01
кстати я тут подумал - пароль легко обходится на дисководе любого типа, но если запаролить загрузку на ЖД УК-НЦ )))
Там так просто JS.SYS уже не пройдёшь )))

- - - Добавлено - - -


Так нужно чтобы его нельзя было вообще обойти
Да.
Он к контрлЦ вообще равнодушен как голубой японец к Саманте Фокс )))

form
13.12.2016, 03:01
Я когда писал про любой - я имел в виду, что мне не приходилось "генерить" с нуля систему что бы игровой сборник
Именно так - не придется генерить.

form
13.12.2016, 03:02
Он к контрлЦ вообще равнодушен как голубой японец к Саманте Фокс )))
Он может и равнодушен, да вторичный загрузчик системы - нет, так, что не факт еще что его нельзя обойти. Но суть вопроса понял :)

hobot
13.12.2016, 03:02
См скрины и описание выше )))
Классная прога да?
Её сочинили что бы MFP или SCE менеджеры покругу крутить под RT-11 !!!

hobot
13.12.2016, 03:03
Именно так - не придется генерить.
ты предлагал как одно из решений с помощью IND

form
13.12.2016, 03:06
ты предлагал как одно из решений с помощью IND
Для этого ничего генерить не нужно. Но IND не обеспечит полного контроля - в момент загрузки систему можно остановить до того как будет запущен стартовый командный файл, соответственно ни одна команда еще выполнена не будет :)

hobot
13.12.2016, 03:08
form, если у тебя стоит UKNCBTL возьми любой из сборников игрушек "новоделов" моих и пощупай его в работе,
попробуй обойди ))) Ничего не выйдет. Кстати если сколько там (настраиваемый параметр) раз воодится неправ. пароль
он тупо вылетает в отладку без всяких шансов на запуск кроме как снова начать дискету загружать )))
Но это просто доб. в к описанию классической версии.

- - - Добавлено - - -


соответственно ни одна команда еще выполнена не будет
вот о том и речь! А тут вместо STARTS.COM в пятом блоке монитора пишем SE JS ON и всё Байтик в шоке до сих пор )))
Как спрашивает оно без стартового файла работает то вообще? )))))))))))))))))

form
13.12.2016, 03:12
любой из сборников
Ты пальцем ткни ;)


А тут вместо STARTS.COM в пятом блоке монитора пишем SE JS ON
Это само по себе не мешает обойти. Еще раз: оборвать можно ДО того как стартовая команда выполнится :)
Но теоретически я могу предположить как можно предотвратить это.

hobot
13.12.2016, 03:15
Ты пальцем ткни
http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/Other/40in1/

Подходит и для эмулятора и для живой машинки )))

form
13.12.2016, 03:21
для живой машинки
До живой еще дожить надо. Я даже телевизер silelis добыл себе, но руки не доходят сделать из него монитор :)

hobot
13.12.2016, 03:29
оборвать можно ДО того как стартовая команда выполнится
ага, только нету на SY: ни PIP ни DUP ни DIR ничего вообще нету )
Чёрный экран, приглашение ком.строки и курсор мигает. ) Такое прерывание не позволит ничего сделать кроме как
перезагрузить дискету (ну со сторонней дискеты мучать её никто не запретит никому и никогда).

- - - Добавлено - - -


silelis
Я помню ты уже "хвастался", я про эти телеки ничего не знаю (про себя прозвал их "шляндыч") )))

form
13.12.2016, 03:32
Такое прерывание не позволит ничего сделать кроме как
перезагрузить дискету
Отчего ж не позволит? Команды D, E, ST никто не отменял - можно простенькую программку набросать и запустить :D

hobot
13.12.2016, 04:07
form, это ты можешь ) Только ты ещё должен сориентироваться и понять где и что прервать.
А вот у нас юзер который без инструкции UKNCBTL запустить не может ))) Надо же оберегать
от него пакет программ. К тому же - меню для игр - это только 1 вариант использования.
А если полновесную граф. оболочку под КЦГД накатать поверх RT-11 ?
Вот там и пригодятся

Команды D, E, ST никто не отменял - можно простенькую программку набросать и запустить и прочие всякие вещи в консольном окне что бы мелькали )))

form
13.12.2016, 06:18
Вот для начала драйвер (http://pdp-11.org.ru/~form/files/pdp-11/rt-11/kaka/). Не причесывал, для простоты пока работает только в 5.02 и новее. Для включения LOA SH, для выключения UNL SH (если есть возможность ;)). Запускает прогу SY:SHELL.SAV если она есть. Если нету - обычная работа в системе.

.LO SH

.COP/NOPRO PIP.SAV SHELL
Files copied:
DK:PIP.SAV to DK:SHELL.SAV

*
PIP V05.31
*
PIP V05.31
*^C

*^C

*SHELL.SAV/D
*^C

.UNL SH

.

Если есть желание - можешь самостоятельно доработать :)
В драйвере никаких хитростей, никаких перехватов векторов. Все документированное-стандартное :)

hobot
13.12.2016, 06:32
Если нету - обычная работа в системе.
а где же то самое кольцо??? )))
надо что бы (если нету) он тупо писал - нету!!! нету нету нету нету нету нету нету нету - бесконечно )))
Обычная работа в системе - не надо! )))

- - - Добавлено - - -

он вообще выпадать в систему не должен! он наоборот от этого должен оберегать (от выпадания в систему)

- - - Добавлено - - -

но этот вариант я изучу, спасибо.

- - - Добавлено - - -

забрал из каки вместе с исходником

- - - Добавлено - - -


нету!!! нету
обращение к SY между сообщениями само собой происходит )

form
13.12.2016, 06:42
нету нету нету нету нету нету нету нету - бесконечно
Ну так просто убрать проверку файла и будет бесконечно писать :)
Так даже проще - сразу куча кода высвободится и сохранять регистры не нужно...

- - - Добавлено - - -

Или можно вставить код зачистки нижней памяти с чистым остановом (на ВМ3 правда он по дороге трапнется, но большую часть зачистит, ну а на УКНЦ вчистую отработает) :D

hobot
13.12.2016, 07:33
form, кстати говоря - я только сейчас обратил внимание!!!
Смотри - классический JS.SYS какая хитрая скотинка.

Во первых прервать его таки можно, но это его не убивает (если только не выгрузить),
после запуска любой программы он снова ищет свою прогу (значит он что то в памяти в делает с монитором, но не на диске - ибо "не навреди") и сам в себе он строку об ошибке не содержит!
Это KMON вместо него орёт что файла нету !!! (см. скрин выше).
Сейчас правлю исходник SH - переименовал его в SSH - типа Старт Шелл )))
Попробую что получиться, но
1. я понятия не имею что такое ХУК
2. мне то можно .PRINT использовать или нет?

- - - Добавлено - - -

form, НЕТ у меня не блинчик и даже не ком получился.
1. LINK ругнулся на три глобальных метки которые я не трогал !!!
2. теперь по LO SSH MON пишет что команда-инвалид )))

Листинг SSH.MAC


.MCALL .MODULE
.MODULE SSH,VERSION=1,COMMENT=<RT-11 Shell Driver>,AUDIT=YES

$SYPTR =: 54 ;POINTER TO RMON
$E16LS =: 316 ;EMT 340-357 DISPATCH TABLE OFFSET
$KMONI =: 450 ;KMON INDICATOR OFFSET

E6.PRI =: <351-340>*2 ;OFFSET TO .PRINT ROUTINE

.MCALL .ADDR,.CHAIN,.DRDEF ;SYSTEM MACRO CALLS
.MCALL .DSTAT,.EXIT,.LOOKUP ;
.MCALL .LOOKUP,.PURGE,.PRINT ;

.DRDEF SSH,340,0,0,0,0 ;DEFINE DRIVER PARAMETERS
.DRPTR LOAD=SHLOA,FETCH=*NO*,UNLOAD=SHUNL ;DEFINE SERVICE ENTRIES

.DRBEG SSH ;START OF DRIVER CODE
MOV SHCQE,R4 ;GET ADDRESS OF QUEUE ELEMENT
BIS #HDERR$,@-(R4) ;SET HARD ERROR STATUS
.DRFIN SSH ;FINISH I/O

SHINT:: TST @(PC)+ ;RUNNING KMON?
SHKMI:: .BLKW ;
BEQ 20$ ;IF EQ NO
.IF EQ MMG$T
CMP @14(SP),(PC)+ ;CHECK IF PROMPT IS PRINTED
.IFF
CMP @16(SP),(PC)+ ;CHECK IF PROMPT IS PRINTED
.ENDC
MOV R5,R5 ;
BNE 20$ ;IF NE NO
MOV R0,-(SP) ;SAVE REGISTERS
MOV R1,-(SP) ;
5$: .ADDR #SHARE,R0 ;POINT TO EMT AREA
.ADDR #SHPGM,R1 ;POINT TO PROGRAM NAME
.LOOKUP R0,#0,R1 ;LOOKUP THE FILE
ROL -(SP) ;SAVE ERROR STATUS
.PURGE #0 ;PURGE CHANNEL
ROR (SP)+ ;RESTORE ERROR STATUS
BCS 10$ ;IF CS FILE NOT FOUND
MOV #500,R0 ;POINT TO CHAIN AREA
MOV (R1)+,(R0)+ ;COPY PROGRAM NAME
MOV (R1)+,(R0)+ ;
MOV (R1)+,(R0)+ ;
MOV (R1)+,(R0)+ ;
.CHAIN ;CHAIN TO PROGRAM
10$: .PRINT #NSHF ;RESTORE REGISTERS
; MOV (SP)+,R0 ;
; JMP @(PC)+ ;JUMP TO SYSTEM ROUTINE
20$: BR 5$
SHPRI:: .BLKW ;ADDRESS OF SYSTEM .PRINT ROUTINE

SHARE:: .BLKW 3 ;EMT AREA
SHPGM:: .RAD50 /SY SHELL SAV/ ;PROGRAM TO CHAIN TO
.DREND SSH

.PSECT SETOVR
SHLOA:: MOV @R5,R5 ;R5=SHLQE
MOV @#$SYPTR,R4 ;R4=RMON
MOV R4,R2 ;COPY
ADD $E16LS(R4),R4 ;R4=EMT 340-357 DISPATCH TABLE
MOV E6.PRI(R4),R3 ;R3=ADDRESS OF .EXIT ROUTINE
ADD R4,R3 ;
MOV R3,SHPRI-SHLQE(R5) ;STORE IN DRIVER
MOV R5,R3 ;R3=SHINT
ADD #SHINT-SHLQE,R3 ;
SUB R4,R3 ;R3=OFFSET TO SHINT
MOV R3,E6.PRI(R4) ;POINT TO OUR ROUTINE
ADD #$KMONI,R2 ;R2=KMON INDICATOR
MOV R2,SHKMI-SHLQE(R5) ;STORE IN DRIVER
SHXIT:: CLC ;FLAG NO ERROR
RETURN ;RETURN

SHUNL:: MOV @R5,R5 ;R5=SHLQE
MOV @#$SYPTR,R4 ;R4=RMON
ADD $E16LS(R4),R4 ;R4=EMT 340-357 DISPATCH TABLE
MOV E6.PRI(R4),R3 ;R3=ADDRESS OF .EXIT ROUTINE
ADD R4,R3 ;
MOV #SHINT-SHLQE,R2 ;R2=SHINT
ADD R5,R2 ;
CMP R3,R2 ;OUR HOOK SET?
BEQ 20$ ;IF EQ YES
JSR R0,10$ ;NO, SET ERROR MESSAGE
.ASCIZ /?SH-F-Other driver hooks .PRINT - can't unload/
.EVEN
10$: COM (SP)+ ;CLEAN STACK, SET CARRY
RETURN ;RETURN
20$: MOV SHPRI-SHLQE(R5),R5 ;R5=ADDRESS OF SYSTEM .PRINT ROUTINE
SUB R4,R5 ;CONVERT TO OFFSET FROM EMTLST
MOV R5,E6.PRI(R4) ;UNHOOK .PRINT
BR SHXIT ;EXIT

NSHF: .ASCIZ /?SH-F-File not found SY:SHELL.SAV/

.END

AFZ
13.12.2016, 07:58
1. LINK ругнулся на три глобальных метки которые я не трогал !!! Добавь в начало строчку
.DSABL GBL Если какая-то метка является глобальной, хорошим тоном считается указать ее в списке команды .GLOBL, а не разрешать Макро считать любую неопределенную в тексте метку глобальной.


2. теперь по LO SSH MON пишет что команда-инвалид ))) Естественно, SSH.SAV надо переименовать в SH.SYS (SHX.SYS для XM/ZM-монитора)

- - - Добавлено - - -

И еще, перед командой переименования .SAV в .SYS надо подать команду REM SH, а после переименования - команду INS SH
И вообще, собери все (включая компиляцию с линковкой) в один .COM-файл.

form
13.12.2016, 08:16
Во первых прервать его таки можно, но это его не убивает (если только не выгрузить)
Здесь аналогично - драйвер не запрещает прерывание программ по CTRL/C, но в момент когда система должна выдать подсказку команды, драйвер снова запустит заданную прогу.


мне то можно .PRINT использовать или нет?
Можно. Драйвер реагирует только на .PRINT который печатает подсказку KMON.


LO SSH
Драйвер не бывает трехбуквенным - потому и ругается. Трехбуквенный файл .SYS драйвера бывает если в системе установлен суффикс драйвера (в XM/ZM/XB/ZB мониторах например добавляется буква X), но при этом имя драйвера в командах остается двухбуквенным.


LINK ругнулся на три глобальных метки которые я не трогал !!!
Ну так написать надо на какие :)
Но глядя на исходники мельком - опять-таки - обозначение драйвера может быть только двухбуквенным.

AFZ
13.12.2016, 08:28
но при этом имя драйвера в командах остается двухбуквенным. Да, а я в исходник не смотрел.

hobot, из-за этого и полезли неопределенные метки. Верни двухбуквенное имя драйвера в тексте.

form
13.12.2016, 08:33
хорошим тоном считается указать ее в списке команды .GLOBL
Это скорее дань уважения RT-11V4 и более старым - там по умолчанию запрещено было смотреть за пределы исходника. В RSX же к примеру даже самых старых наоборот всегда было разрешено - там это необходимость чтобы распознать основные системные переменные и коды ошибок/функций I.O итд (хотя с помощью кучи макросов можно и вручную поопределять все это [в программах для RTEM так и делаю поскольку RTшный SYSLIB ничего не знает про RSXные символы :)]).

AFZ
13.12.2016, 09:02
Это скорее дань уважения RT-11V4 и более старым - там по умолчанию запрещено было смотреть за пределы исходника. И правильно. Согласись, неприятно узнавать только от линкера о том, что ты, набирая метку, попал не в ту пимпочку!..


В RSX же к примеру даже самых старых наоборот всегда было разрешено - там это необходимость чтобы распознать основные системные переменные и коды ошибок/функций I.O итд Эта необходимость является следствием недоработки. По-хорошему надо было определить все эти дела в какой-то системной макрокоманде (или в нескольких). .MCALL-то ты пишешь? И это бы написал.

- - - Добавлено - - -

(Хотя сравнительно свежие макро понимают .MCALL AUTO, или как там он пишется? Ни разу не пользовался, опять же из околоструктурных соображений. Ну, или следуя правилам хорошего тона.) :)

form
13.12.2016, 09:04
Эта необходимость является следствием недоработки.

Согласись, неприятно узнавать только от линкера о том, что ты, набирая метку, попал не в ту пимпочку!..
Это уже вопрос вкуса. Те кто начинал с RSX с этим не согласятся :)
Следуя той же логике про возможность написать, никто не мешает написать .DSABL GBL
.MACLLов и потом вызовов в начале программы может набраться штук 10 только ради того, чтобы определить то, что используется по сути во всех без исключения программах - я бы сказал, что именно это - излишества :)

AFZ
13.12.2016, 09:04
А, вспомнил. .ENABL MCL

form
13.12.2016, 09:13
А, вспомнил. .ENABL MCL
Это позволяет не использовать .MCALL, но это как раз очень вредная фича - на каждый чих будут просматриваться все макробиблиотеки которые используются.
И кстати не всегда сработает. Например с .PRINT в RT-11 такой номер не пройдет - он не подцепится :)

- - - Добавлено - - -

А если еще вспомнить старые компиляторы MACRO-11 в которых символы R0-R5, SP, PC не были определены... Вроде в моей любимой книге Сингера советуют явно определять регистры :)

AFZ
13.12.2016, 09:17
Следуя той же логике про возможность написать, никто не мешает написать .DSABL GBL Что я и посоветовал Хоботу


.MACLLов и потом вызовов в начале программы может набраться штук 10 только ради того, чтобы определить то, что используется по сути во всех без исключения программах Так я и сказал, что DEC'овцам надо было объявить эти метки глобальными в нескольких системных макрокомандах. Одна - для ввода-вывода, одна для обработки ошибок и т.д., так, чтобы их набралось с десяток, не больше. Или даже одну, в конце, которая проверит все системные макровызовы, встреченные во всём исходнике и сгенерит все необходимые .GLOBL для тех меток, которые положено использовать тем макровызовам, которые есть в тексте. (И не генерить те, что не положены, если где накосячишь, то линкер пошлёт!..)

form
13.12.2016, 09:24
.GLOBL
Тут исходники TSX радуют глаз - там только что регистры не определяют вручную (а может и определяют в старых версиях еще) :)

AFZ
13.12.2016, 09:30
А если еще вспомнить старые компиляторы MACRO-11 в которых символы R0-R5, SP, PC не были определены... Вроде в моей любимой книге Сингера советуют явно определять регистры Угу. Например ПЛОСовский асм (не макро, макрокоманд он не понимает). Все мои программы тех вреиен начинались: R0=%0 <CR><LF> ... R5=%5<CR><LF> R6=%6 <CR><LF> R7=%7

С переходом на RT-11 этот список сократился до двух последних строчек - про R6 и R7. Поскольку при вызове подпрограммы я на автопилоте писал JSR R7,SUB, при выходе из П/П - RTS R7 и MOV Rn,-(R6) при сохранении регистра. А SP, PC, команды CALL и RETURN я так и не выучил.

form
13.12.2016, 09:51
команды CALL
DEC с этой командой вытворяет черт-те что в своих системах...
Например если заглянуть в системные программы RSX можно увидеть (справа написано что получится в результате):
CALL $INTSV,PR5 ; JSR R5,$INTSV
; .WORD PR5
CALL $SAVNR ; JSR R5,$SAVNR
CALL $SWSTK,EXIT ; EMT 376
; .WORD EXIT
И только во всех остальных случаях будет обычный JSR PC :)

- - - Добавлено - - -


.BYTE NOP/IOT+SWAB,EMT/BR ;АНАЛОГ МАКРОКОМАНДЫ .EXIT В RT-11
:D

hobot
13.12.2016, 09:54
AFZ, я поправлю и на свежую голову (в моём понимании) вечером отпишусь.
Глобальной я называю метки с двойным двоеточием естественно.

Я помню, что все исходники "взрослых программистов" на МАКРО-11 которые
я в детстве разбирал, в шапке всегда содержали .ENABL LC, MCL и .DSABL GBL )

В общем обсуждение интересное получается, по исходнику текущему продолжим позже.
Лады? )

- - - Добавлено - - -

Насчёт 2-ух буквенности в имени драйвера я конечно знал, но видимо основательно забыл ))) Или увлёкся просто )))

form
13.12.2016, 16:33
по исходнику текущему
Держи на закуску слегка дополненный драйвер (там же). Добавлен грязный хак, запрещающий обрыв по CTRL/C (и вообще клавиатуру). При этом в стартовом файле обязательно должна быть загрузка драйвера - иначе клавиатура просто будет эффективно отключена :)
Не будет работать в многотерминальном RT-11.

Alex_K
13.12.2016, 22:56
Драйвер реагирует только на .PRINT который печатает подсказку KMON.
Вообще-то в KMON два .PRINT-а после которых стоит команда MOV R5,R5. Второй .PRINT обслуживает подсказки дополнительных вопросов, когда вводится команда без параметров, например ввели COPY и задаётся сначала вопрос "From?". Получается, что драйвер и на этот .PRINT будет реагировать.
В своём драйвере AC я ограничивал диапазон, чтобы реагировало только на запрос командной строки.

form
13.12.2016, 23:02
Вообще-то в KMON два .PRINT-а после которых стоит команда MOV R5,R5.
Да, но в силу специфики задачи, до другого дело никогда не дойдет :)


Получается, что драйвер и на этот .PRINT будет реагировать.
Да, если бы удалось заставить KMON спросить скажем "Device?" была бы точно такая же реакция. Но в сущности именно это и требовалось - всегда попадать в определенную программу.

- - - Добавлено - - -


В своём драйвере AC я ограничивал диапазон, чтобы реагировало только на запрос командной строки.
Там специфика другая - нужно было насколько я помню менять именно подсказку команды :)

Alex_K
13.12.2016, 23:06
Интересно, а почему hobot-а не удовлетворил JS.SYS? Так же мой AC.SYS мог запускать SY:ACM.SAV вместо вывода приглашения.

form
13.12.2016, 23:07
Есть и еще один нюанс который в другом драйвере мог бы резать глаза - это работа с адресами программы. Драйвер проверяет при сборке MMG$T (от этого зависит смещение до сохраненного PC перед EMT), но дальше никаких усилий по преобразованию адреса не выполняет ибо в данном конкретном случае мы имеем дело с KMON который всегда в нижней памяти :)

- - - Добавлено - - -


Интересно, а почему hobot-а не удовлетворил JS.SYS?
Наверное когда есть исходники - всегда интересно. Опять же, я вон предложил простой способ заблокировать CTRL/C в момент загрузки :)

Alex_K
13.12.2016, 23:13
Наверное когда есть исходники - всегда интересно. Опять же, я вон предложил простой способ заблокировать CTRL/C в момент загрузки
Исходники AC.SYS тоже есть в образе sysimage.dsk. Там тоже можно в инсталляционную процедуру вставить блокировку клавиатуры, а по SET AC ON восстанавливать разрешение прерываний. Мой во всяком случае работает и в версии 5.00.
А по поводу исходников JS.SYS - его размер всего 2 блока, вручную дизассемблировать особого труда нет, если уж очень хочется.

form
13.12.2016, 23:16
вручную дизассемблировать особого труда нет, если уж очень хочется.
А смысл? Я показал направления куда можно копать. Это все совместимо и с 5.0 (при желании можно и для 4.0 сделать, но там придется методику менять - там нет SL magic), только вместо точки входа LOAD нужно сделать подключение вручную через запуск из SET - это несложно. Пусть развлекается :)

Alex_K
13.12.2016, 23:19
Это все совместимо и с 5.0, только вместо точки входа LOAD нужно сделать подключение вручную - это несложно.
Ну в 5.0 простой LOAD не сработает вроде бы.

form
13.12.2016, 23:28
Ну в 5.0 простой LOAD не сработает вроде бы.
Потому и говорю, что нужно вручную сделать - из обработчика SET вызвать .DSTAT, если драйвер не загружен - передать команду загрузки и повторный SET ON (или запуск как программы - не суть важно), снова .DSTAT и оттуда получить адрес LQE, а дальше - та же процедура что сейчас для LOAD используется.

- - - Добавлено - - -

А для 5.02 и новее, кстати, есть еще более простой способ - вообще никакого драйвера не нужно. Правда не такой изящный - позволять иногда попасть в подсказку, но на любые команды снова попадать в свою программу :)
UCF для того и придуман :)

Alex_K
13.12.2016, 23:31
Потому и говорю, что нужно вручную сделать - обработчика SET сделать .DSTAT, если драйвер не загружен - передать команду загрузки и повторный SET ON (или запуск как программы - не суть важно), снова .DSTAT и оттуда получить адрес LQE, а дальше - та же процедура что сейчас для LOAD используется.
Ну в общем как у меня в AC и делается. Только тогда я о таблице смещений запросов EMT не знал, перехватывал целиком вектор EMT и уже реагировал на EMT 351.
Кстати, и индикатора запуска KMON в 5.0 тоже вроде нету.

form
13.12.2016, 23:36
Только тогда я о таблице смещений запросов EMT не знал
Просто про нее ничего не писалось в советской литературе, хотя сама по себе таблица упоминается как минимум в документации РАФОСа.


Кстати, и индикатора запуска KMON в 5.0 тоже вроде нету.
Есть, но там нужно несколько иначе его вытаскивать - из таблиц вроде на него выхода нет.
Точнее в FB/XM 5.0 вижу - все также как и в новых, а в SJ по другому (кстати это ко всем SJ относится видимо, но в силу проверки сигнатуры подсказки собственно тест на кмон наверное можно исключить в принципе). Вот сколько полезного можно узнать, копаясь в вопросах старины :)

Alex_K
13.12.2016, 23:47
Есть, но там нужно несколько иначе его вытаскивать - из таблиц вроде на него выхода нет.
Точнее в FB/XM 5.0 вижу - все также как и в новых, а в SJ по другому. Вот сколько полезного можно узнать, копаясь в вопросах старины
Посмотрел разные исходники RT-11, со стандартным смещением 0450 он появляется только в версии 5.4, а в других версиях он есть, но его смещение скачет туда-сюда.

form
13.12.2016, 23:54
со стандартным смещением 0450 он появляется только в версии 5.4
Плохо смотрел - в 5.0 появляется, но только для FB/XM :)
Но как написал выше, тест по сути вообще не нужен - по привычке его сделал. Он имеет смысл если проверяется ввод, а мы проверяем .PRINT - он такой только в KMON.

- - - Добавлено - - -

А в 5.4 наверное появилась фича SET SL KMON, для нее и в SJ сделали также.

- - - Добавлено - - -

А нет, вру, там не 450 - просто относительно других смещений сохранились расстояния, но похоже тогда они еще не были фиксированными. Занятно. Я считал всегда, что настройки SET EDIT имеют фиксированные смещения, оказывается они тоже менялись. Вот почему их не документировали раньше :)

Alex_K
14.12.2016, 00:01
Плохо смотрел - в 5.0 появляется, но только для FB/XM
В 5.0 для SJ-монитора он тоже есть, но не в секции RTDATA.

form
14.12.2016, 00:06
В 5.0 для SJ-монитора он тоже есть
Есть, но там он просто посреди программы. А в FB/XM в RTDATA, но он и многое другое еще видимо не привязано к месту - позже переместилось.

Alex_K
14.12.2016, 00:09
Есть, но там он просто посреди программы. А в FB/XM в RTDATA, но он и многое другое еще видимо не привязано к месту - позже переместилось.
Посмотрел исходники разных версий, есть начиная с версий 3.х, ранее исходников у меня нет. Для SJ действительно посреди программы, а для FB/XM уже в секции RTDATA.

form
14.12.2016, 00:12
Для SJ действительно посреди программы
Точнее до определенного момента. В 5.03 (и кажется 5.02) уже в RTDATA, но смещение с FB/XM не совпадает.
Также не подтвердилась версия про SL - в 5.03 опция SET SL KMON уже есть, а смещения разные у FB/XM и SJ.

Хотя тогда FB/XM легко было отличить от SJ по биту FBMON$. Это в 5.6 его разжаловали в виду того, что SB по сути стал просто однозадачным FB.

Alex_K
14.12.2016, 00:22
Точнее до определенного момента. В 5.03 (и кажется 5.02) уже в RTDATA, но смещение с FB/XM не совпадает.
Уже с версии 5.1 везде в секции RTDATA, но смещения скачут. А вот начиная с версии 5.4 уже всё стандартизировано. Это кстати описано в AA-52861-TC_54relNote_Jun86.pdf.

form
14.12.2016, 00:26
версии 5.4
Версия 5.4 вообще во многом переломная: в ней впервые появился (в 5.4G) многострочный SL. В ней же появились макрокоманды для драйверов с расширенными номерами устройств (10-77), хотя сами расширенные номера появились только в 5.5.

- - - Добавлено - - -


описано в AA-52861-TC_54relNote_Jun86.pdf
Можно смело последний читать - там история есть.

Alex_K
14.12.2016, 00:34
Можно смело последний читать - там история есть.
История какая-то куцая, разница между 5.0 и 5.5, и ни слова, что это в 5.4 ещё появилось.

form
14.12.2016, 00:39
История какая-то куцая, разница между 5.0 и 5.5
В 5.6 вроде подробная была.

Там кстати также называется глава - между 5.0 и 5.5, но по ходу чтения указаны конкретные версии и даже буковки.

- - - Добавлено - - -

Попутно посмотрел, что RTEMовские заточки интегрировали в основной RT-11 начиная с версии 5.02, и ошибки которые были при этом допущены так и остались навсегда нетронутыми :)

Alex_K
14.12.2016, 00:42
В 5.6 вроде подробная была.
Подробная. Что появилось в 5.6, а затем разница между 5.0 и 5.5. Подробно, это когда описываются все нововведения в каждой версии, т.е. 5.1, 5.2, ну и т.д.
Ладно, много написали, hobot-у большая пища для размышлений.

form
14.12.2016, 00:59
Подробно, это когда описываются все нововведения в каждой версии, т.е. 5.1, 5.2, ну и т.д.
Именно так там и написано если читать - конкретные версии (в том числе 5.4 и разные буквы к нему упоминаются не раз).

- - - Добавлено - - -

По хорошему на досуге надо основные изменения с V4.0 записать. А то многое уже забываться стало, а ведь когда-то описание макробиблиотеки (к примеру) содержало приписку FB/XM only на большую часть макрокоманд :)

- - - Добавлено - - -

Сравнил смещения .GVAL для TSX+ и РАФОС/TS - вот где постоянство: ничего не изменилось. Только новое добавилось (ну и где-то подкорректировалось в связи с развитием: например раньше по смещению -6 был признак привилегированности задания, а позже стало указывать на конкретную привилегию SYSPRV, но смысл по сути не изменился) :)

hobot
14.12.2016, 03:14
form, вот мои изменения в исходнике SH.MAC



.MCALL .MODULE
.MODULE SH,VERSION=1,COMMENT=<RT-11 Shell Driver>,AUDIT=YES
.ENABL LC, MCL
.DSABL GBL

$SYPTR =: 54 ;POINTER TO RMON
$E16LS =: 316 ;EMT 340-357 DISPATCH TABLE OFFSET
$KMONI =: 450 ;KMON INDICATOR OFFSET

E6.PRI =: <351-340>*2 ;OFFSET TO .PRINT ROUTINE

.MCALL .ADDR,.CHAIN,.DRDEF ;SYSTEM MACRO CALLS
.MCALL .DSTAT,.EXIT,.LOOKUP ;
.MCALL .LOOKUP,.PURGE,.PRINT ;

.DRDEF SH,340,0,0,0,0 ;DEFINE DRIVER PARAMETERS
.DRPTR LOAD=SHLOA,FETCH=*NO*,UNLOAD=SHUNL ;DEFINE SERVICE ENTRIES

.DRBEG SH ;START OF DRIVER CODE
MOV SHCQE,R4 ;GET ADDRESS OF QUEUE ELEMENT
BIS #HDERR$,@-(R4) ;SET HARD ERROR STATUS
.DRFIN SH ;FINISH I/O

SHINT:: TST @(PC)+ ;RUNNING KMON?
SHKMI:: .BLKW ;
BEQ 20$ ;IF EQ NO
.IF EQ MMG$T
CMP @14(SP),(PC)+ ;CHECK IF PROMPT IS PRINTED
.IFF
CMP @16(SP),(PC)+ ;CHECK IF PROMPT IS PRINTED
.ENDC
MOV R5,R5 ;
BNE 20$ ;IF NE NO
; MOV R0,-(SP) ;SAVE REGISTERS
; MOV R1,-(SP) ;
5$: .ADDR #SHARE,R0 ;POINT TO EMT AREA
.ADDR #SHPGM,R1 ;POINT TO PROGRAM NAME
.LOOKUP R0,#0,R1 ;LOOKUP THE FILE
ROL -(SP) ;SAVE ERROR STATUS
.PURGE #0 ;PURGE CHANNEL
ROR (SP)+ ;RESTORE ERROR STATUS
BCS 10$ ;IF CS FILE NOT FOUND
MOV #500,R0 ;POINT TO CHAIN AREA
MOV (R1)+,(R0)+ ;COPY PROGRAM NAME
MOV (R1)+,(R0)+ ;
MOV (R1)+,(R0)+ ;
MOV (R1)+,(R0)+ ;
.CHAIN ;CHAIN TO PROGRAM
10$: ;MOV (SP)+,R1 ;RESTORE REGISTERS
;MOV (SP)+,R0 ;
20$: .PRINT #FNF
BR 5$
;JMP @(PC)+ ;JUMP TO SYSTEM ROUTINE
SHPRI:: .BLKW ;ADDRESS OF SYSTEM .PRINT ROUTINE

SHARE:: .BLKW 3 ;EMT AREA
SHPGM:: .RAD50 /SY SHELL SAV/ ;PROGRAM TO CHAIN TO
.DREND SH

.PSECT SETOVR
SHLOA:: MOV @R5,R5 ;R5=SHLQE
MOV @#$SYPTR,R4 ;R4=RMON
MOV R4,R2 ;COPY
ADD $E16LS(R4),R4 ;R4=EMT 340-357 DISPATCH TABLE
MOV E6.PRI(R4),R3 ;R3=ADDRESS OF .EXIT ROUTINE
ADD R4,R3 ;
MOV R3,SHPRI-SHLQE(R5) ;STORE IN DRIVER
MOV R5,R3 ;R3=SHINT
ADD #SHINT-SHLQE,R3 ;
SUB R4,R3 ;R3=OFFSET TO SHINT
MOV R3,E6.PRI(R4) ;POINT TO OUR ROUTINE
ADD #$KMONI,R2 ;R2=KMON INDICATOR
MOV R2,SHKMI-SHLQE(R5) ;STORE IN DRIVER
SHXIT:: CLC ;FLAG NO ERROR
RETURN ;RETURN

SHUNL:: MOV @R5,R5 ;R5=SHLQE
MOV @#$SYPTR,R4 ;R4=RMON
ADD $E16LS(R4),R4 ;R4=EMT 340-357 DISPATCH TABLE
MOV E6.PRI(R4),R3 ;R3=ADDRESS OF .EXIT ROUTINE
ADD R4,R3 ;
MOV #SHINT-SHLQE,R2 ;R2=SHINT
ADD R5,R2 ;
CMP R3,R2 ;OUR HOOK SET?
BEQ 20$ ;IF EQ YES
JSR R0,10$ ;NO, SET ERROR MESSAGE
.ASCIZ /?SH-F-Other driver hooks .PRINT - can't unload/
.EVEN
10$: COM (SP)+ ;CLEAN STACK, SET CARRY
RETURN ;RETURN
20$: MOV SHPRI-SHLQE(R5),R5 ;R5=ADDRESS OF SYSTEM .PRINT ROUTINE
SUB R4,R5 ;CONVERT TO OFFSET FROM EMTLST
MOV R5,E6.PRI(R4) ;UNHOOK .PRINT
BR SHXIT ;EXIT

FNF: .ASCIZ /?SH-F-File not found SY:SHELL.SAV/

.END

.LO SH
000066
@


Беда в том, что я основную часть программы просто не понимаю и воспринимаю скорее интуитивно.
Правильно я понимаю, что драйвер проверяет приглашение и если оно выводится пытается
запустить программу оболочки? Но только всё слишком не явно для меня.
Даже .CHAIN директива описана "не моим" (чит. не простым) способом каким-то?
Буду рад любым комментариям и обсуждению.

- - - Добавлено - - -


Держи на закуску слегка дополненный драйвер (там же).
увидел только сейчас, забираю

form
14.12.2016, 03:22
5$: .ADDR #SHARE,R0 ;POINT TO EMT AREA


.LOOKUP R0,#0,R1 ;LOOKUP THE FILE
ROL -(SP) ;SAVE ERROR STATUS
.PURGE #0 ;PURGE CHANNEL
ROR (SP)+ ;RESTORE ERROR STATUS
BCS 10$ ;IF CS FILE NOT FOUND


20$: .PRINT #FNF
BR 5$
Все это выкинуть, JMP раскоментировать. Тогда будет до бесконечности писать что программы нет (если ее нет). А так получится сбой системы из-за использования вызовов за пределами перехваченного без сохранения регистров. То есть ничего добавлять не надо чтобы до бесконечности писало что программы нету - надо только убрать :)

- - - Добавлено - - -


.PRINT #FNF
А так, если когда придется делать что-то в этом роде - в драйвере так не получится. Нужно или во время загрузки подправлять в памяти адреса (но это 5.02 и новее) или использовать .ADDR чтобы на ходу определять адрес.

hobot
14.12.2016, 03:44
hobot-у большая пища для размышлений.
мне нужны подробности. почему так а не по другому, это одна из причин
почему я AC.SYS до сих пор не переделал, просто потому, что я не могу
разделить ненужный функционал от нужного (точнее я разделяю, но прога
перестаёт работать! "смайл")


в драйвере так не получится.
я вот протакие вещи совсем совсем не в курсе (самой природы таких ограничений).

ХА! form
, ты будешь смеятся - забрал драйвер который с COM файлом - он так-же выпадает в 066
перезагрузился и у меня висит система ))) То есть приглашение . и всё ничего не печатает,
в смысле на клавиатуру нет реакции ))) это означает что???

В любом случае всем очень благодарен за участие как минимум,
честно сейчас уверен может проще дизасемблировать оригинальный JS.SYS и подсмотреть,
как там эту задачу решили??? Только опять (писал выше) мне дизасм. скажет мало-мало чем (к примеру) form'у )))

Сейчас выкину по последней шпоре, попробую.
Почему и обязательно .CHAIN через регистры? Почему
не


/* MOV #^RSY ,@#^O500
MOV #^RSHE,@#^O502
MOV #^RLL ,@#^O504
MOV #^RSAV,@#^O506
.CHAIN


Ладно, сейчас буду править по последней шпоре.

form
14.12.2016, 03:55
это означает что???
Это ознчает, что в стартовом командном файле нет команды загрузки драйвера - выше писал, что она обязательна :)


Почему не
Просто больше места займет, а так - пофигу.

Кроме того нужно убрать тестирование KMON indicator - слишком много бардака с ним, да и смысла нет - мы вполне эффективно проверяем его наличие другим способом :)

hobot
14.12.2016, 04:34
Ладно, сейчас буду править по последней шпоре.

Поправил, собрал.
Реакция на команду INS SH > ?MON-F-Trap to 4 110664

Зато после перезагрузки и команды LO SH
вроде бы почти оно (надо ещё пощупать на нюансы)

http://pic.pdp-11.ru/thumbs/20161214010145171.png (http://pic.pdp-11.ru/?v=20161214010145171.png)

form, я вот такие вещи "не врубаю" как может программа доходить до АСКИЗ про нет файла,
если буквально перед ней стоит прямой переход BR ??? Мне как Паскальщику не понять это сходу!
Проблема в том, что мы с тобой видим один и тот же бублик, только видимо ты видишь его в виде замеса
из ингридиентов, а я в виде готовой булочки )))

- - - Добавлено - - -


Кроме того нужно убрать тестирование KMON indicatorЕщё что то подчистить ??? Можно планочку пониже, рупор погромче, у нас тут в танках только паскаль и броня толстая )))

- - - Добавлено - - -


я вот такие вещи "не врубаю"
стоп! Моя ошибка! Это не мой аскиз - это мон ругается за меня ) Вот это я совсем не понимаю.

- - - Добавлено - - -

в общем выкинул и свою строку, вроде бы всё красиво и соотв. ТЗ )))
Огромное преогромное !!! Но буду ещё тестить проверять мучить по всякому !!! )))

form
14.12.2016, 07:01
Реакция на команду INS SH
Нельзя его этой командой ставить - только автоматом :)

form
14.12.2016, 21:48
Пара слов о разборках с системой в которой RT-11 программа выполняется и попутных фичах. RSTS/E пока не затронут - сам не знаю что в нем и как кроме некоторой теории ;)

$SYSGE =: 372 ;СМЕЩЕНИЕ ДО СЛОВА ПАРАМЕТРОВ ГЕНЕРАЦИИ
TSXP$ =: 100000 ;БИТ TSX-PLUS
RTEM$ =: 10 ;БИТ RTEM-11

$SYSVE =: 276 ;СМЕЩЕНИЕ НОМЕРА ВЕРСИИ RT-11
$SYSUP =: 277 ;СМЕЩЕНИЕ НОМЕРА КОРРЕКЦИИ RT-11

$CNFG1 =: 300 ;СМЕЩЕНИЕ СЛОВА КОНФИГУРАЦИИ СИСТЕМЫ
FJOB$ =: 200 ;БИТ ЗАГРУЖЕННОГО FOREGROUND ИЛИ SYSTEM ЗАДАНИЯ
FBMON$ =: 1 ;БИТ МОНИТОРА FB/XM ИЛИ SET NOSJ

$TSXVE =: -40 ;СМЕЩЕНИЕ ВЕРСИИ TSX/TSX-PLUS

$RTEID =: 252 ;АДРЕС ИДЕНТИФИКАТОРА RTEM-11
RTE$ID =: ^RRTE ;ИДЕНТИФИКАТОР RTME-11
;ЭТО УНИВЕРСАЛЬНЫЙ СПОСОБ ПРОВЕРКИ НА TSX/TSX-PLUS (И РАФОС/TS - КАК БЕЗ НЕГО).
;РУКОВОДСТВО ПРОГРАММИСТА TSX-PLUS ПРЕДЛАГАЕТ ДРУГОЙ СПОСОБ: ВЫЗВАТЬ КАКОЙ-НИБУДЬ
;EMT 375 С ФУНКЦИЕЙ, СПЕЦИФИЧНОЙ ДЛЯ TSX (ПРЕДВАРИТЕЛЬНО ЗАПРЕТИВ ПРЕРЫАНИЕ ПРОГРАММЫ
;МАКРОКОМАНДОЙ .SERR), НО СПОСОБ ОТРИЦАТЕЛЬНЫХ СМЕЩЕНИЙ .GVAL ВЫГЛЯДИТ ПРОЩЕ
;И, ЕСЛИ СКЛЕРОЗ НЕ ПОДВОДИТ, В РАФОСОВСКОЙ ДОКУМЕНТАЦИИ РЕКОМЕНДУЕТСЯ ИМЕННО ОН).

.GVAL $AREA,#$TSXVE ;ПОЛУЧАЕМ ВЕРСИЮ TSX
BCS ... ;CS - ЭТО НЕ TSX/TSX-PLUS
;В ПРОТИВНОМ СЛУЧАЕ ИМЕЕМ В R0 ВЕРСИЮ СИСТЕМЫ
;В ВИДЕ X.Y (X*100.+Y)
;ПРОВЕРКА ПАРАМЕТРОВ ГЕНЕРАЦИИ СИСТЕМЫ МОЖЕТ ВЫЯВИТЬ TSX-PLUS, НО НЕ СМОЖЕТ ВЫЯВИТЬ
;СТАРЫЕ ВЕРСИИ TSX (И РАФОС/TS - КАК БЕЗ НЕГО). RTEM-11 ВЫЯВИТ.

.GVAL $AREA,#$SYSGE ;ПОЛУЧАЕМ ПАРАМЕТРЫ ГЕНЕРАЦИИ СИСТЕМЫ
TST R0 ;TSX-PLUS?
BMI ... ;MI - ДА

;ЗАТО RTEM-11 ЧЕРЕЗ ДАННОЕ СМЕЩЕНИЕ RMON ВЫЯВИТЬ МОЖНО ОЧЕНЬ ЛЕГКО

BIT #RTEM$,R0 ;RTEM-11?
BNE ... ;NE - ДА

;ТАКЖЕ ВОЗМОЖЕН ДРУГОЙ СПОСОБ ПРОВЕРКИ НА RTEM-11 - БЕЗ ПРИВЛЕЧЕНИЯ СМЕЩЕНИЙ RMON

CMP #RTE$ID,@#$RTEID ;RTEM-11?
BEQ ... ;EQ - ДА
;ДАЛЕЕ РАЗБИРАЕМСЯ С ВЕРСИЯМИ RT-11 (С ВЕРСИЯМИ TSX/TSX-PLUS МЫ РАЗОБРАЛИСЬ ВЫШЕ,
;И МЕТОД, ОПИСАННЫЙ НИЖЕ, ПОКАЖЕТ В НИХ ТОЛЬКО ВЕРСИЮ RT-11 ИЗ ПОД КОТОРОЙ БЫЛ ЗАПУЩЕН
;TSX/TSX-PLUS ИЛИ РАФОС/TS.
;
;ЭТОТ НОМЕР ВЕСЬМА ПОЛЕЗЕН ЧТОБЫ ЗНАТЬ НА ЧТО СПОСОБНА СИСТЕМА. В RT-11 ЕСТЬ
;ЧЕТКО РАСПИСАННОЕ СООТВЕТСТВИЕ ВОЗМОЖНОСТЕЙ ВЕРСИЯМ; TSX-PLUS ПО НОМЕРАМ ВЕРСИИ ТАКЖЕ
;ОПРЕДЕЛЯЕТ СООТВЕТСТВИЕ ВОЗМОЖНОСТЕЙ УЖЕ В ЗАГРУЖЕННОМ TSX-PLUS. НАШ (ИЛИ СКОРЕЕ "НАШ")
;РАФОС НЕ НАРУШАЕТ ТРАДИЦИЙ - ОН ЧЕСТНО СОВПАДАЕТ С ВЕРСИЕЙ RT-11 С КОТОРОЙ ЕГО СП...ИСАЛИ.
;ФОДОС, "НАПИСАННЫЙ" ПОЗЖЕ НЕКИМИ РЕДИСКАМИ НЕ СЛЕДУЕТ ЭТОЙ ТРАДИЦИИ И ПОТОМУ МОЖЕТ ВВОДИТЬ
;В ЗАБЛУЖДЕНИЕ, НО, ПОСКОЛЬКУ РЕДИСКИ ДАННОГО ВИДА РОДИЛИСЬ ПОЗЖЕ V4.00 И УМЕРЛИ РАНЬШЕ V5.01,
;СМЕЛО СЧИТАЕМ ФОДОС КАК RT-11 V5.0 ([ПРАВДА, ОПЯТЬ ТАКИ, ЕСЛИ СКЛЕРОЗ НЕ
;ИЗМЕНЯЕТ, ВСЕ ЖЕ ВИДЕЛ ФОДОС - RT-11 V3, НО НИ РАЗУ V4]. ВОТ ТОЛЬКО КАК
;ОПРЕДЕЛИТЬ ЧТО ЭТО ИМЕННО ФОДОС - КАКОЙ ТОЛЬКО ХЕРНИ ОНИ НЕ ВПИСЫВАЛИ
;ДАЖЕ В СТРОКУ КОТОРАЯ ПЕЧАТАЕТСЯ ПРИ ЗАГРУЗКЕ)...

.GVAL #AREA,#$SYSVE ;ПОЛУЧАЕМ ВЕРСИЮ СИСТЕМЫ
;МЛАДШИЙ БАЙТ - ВЕРСИЯ, СТАРШИЙ - НОМЕР КОРРЕКЦИИ
;ПРОВЕРКА НА НАЛИЧИЕ FOREGROUND JOB (А ТАКЖЕ ПОПУТНО НА TSX)
;ЭТОТ БИТ ВСЕГДА УСТАНОВЛЕН В TSX/TSX-PLUS (И РАФОС/TS - КАК БЕЗ НЕГО)
;ТАМ ГДЕ ВСЕ ПОДОБНЫЕ УСЛОВИЯ МОЖНО УРАВНЯТЬ ЭТОТ БИТ ОТЛИЧНО СРАБОТАЕТ...

.GVAL #AREA,#$CNFG1 ;ПОЛУЧАЕМ КОНФИГУРАЦИЮ СИСТЕМЫ
TSTB R0 ;БИТ 7 ГОВОРИТ О ЗАГРУЖЕННОМ FOREGROUND/SYSTEM JOB
BMI ... ;MI - ЗАГРУЖЕН
;ПРОВЕРКА НА SJ МОНИТОР. ЭТА ПРОВЕРКА ПОЗВОЛИТ ИДЕНТИФИЦИРОВАТЬ SJ МОНИТОР.
;SJ МОНИТОР КРОМЕ ОДНОЗАДАЧНОСТИ ОТЛИЧАЕТСЯ ТАКЖЕ ОТСУТСТВИЕМ МНОГИХ СИСТЕМНЫХ ВЫЗОВОВ И
;ВОЗМОЖНОСТЕЙ. НАЧИНАЯ С RT-11 ВЕРСИИ 5.6, SJ МОНИТОРА НЕ СТАЛО, А ОДНОЗАДАЧНЫЙ МОНИТОР SB
;ЯВЛЯЕТСЯ СКОРЕЕ ОДНОЗАДАЧНОЙ ВЕРСИЕЙ FB МОНИТОРА (И ПОДДЕРЖИВАЕТ ВСЕ ЕГО СИСТЕМНЫЕ ВЫЗОВЫ).
;ПРИ ЭТОМ В RT-11 V5.6 И НОВЕЕ ЗНАЧЕНИЕ ЭТОГО БИТА МОЖЕТ БЫТЬ ИЗМЕНЕНО КОМАНДОЙ
;SET MODE [NO]SJ. СЛОВОМ, ЕСЛИ ПОЛАГАТЬСЯ НА ЭТОТ БИТ - НУЖНО ТАКЖЕ ПРОВЕРЯТЬ ВЕРСИЮ СИСТЕМЫ.

.GVAL $AREA,#$CNFG1 ;ПОЛУЧАЕМ КОНФИГУРАЦИЮ СИСТЕМЫ
BIT #FBMON$,R0 ;SJ МОНИТОР
BEQ ... ;EQ - ДА

Alex_K
15.12.2016, 22:46
мне нужны подробности. почему так а не по другому, это одна из причин
почему я AC.SYS до сих пор не переделал, просто потому, что я не могу
разделить ненужный функционал от нужного (точнее я разделяю, но прога
перестаёт работать! "смайл")
А какой же у AC.SYS ненужный функционал? Он писался для изменения промтера системы и для запуска оболочки SY:ACM.SAV. Собственно это он вроде нормально выполняет.

hobot
16.12.2016, 06:17
А какой же у AC.SYS ненужный функционал?
Если помните я просил помощи урезать только до промтера и всё что с ним связано,
там ещё что то в нём я не помню сейчас уже точно, но сегодня абсолютно не актуальное.
Далее я столкнулся ещё с одним тупиком - я совершенно не понимаю как сделать современные даты
в нём. Извиняюсь, но я Паскальщик на уровне хобби. Я например не представляю где там в исходнике
параметр отвечающий 2 буковки на год или 4, попытка убрать это (что бы не чесалось) снова приводит к краху.
В итоге я забросил и пользуюсь как есть. )))


и для запуска оболочки SY:ACM.SAV.
Вот это лишний функционал 100%

Eats
18.12.2016, 05:54
Желательно имя запускаемого файла сделать параметром типа SE JS SFN(Start File Name)=/тут шесть символов имя файлаЭто невозможно, после знака равенства может быть десятичное или восьмеричное значение,но никак не строка символов.Не вижу ничего невозможного. Драйверу передаётся 16-разрядное слово. Каким способом интерпретирует это слово драйвер - это сугубо его личное дело. Он может считать это слово, например, именем файла от 0.SAV до 65535.SAV (подставляя расширение, естественно, самостоятельно) или от 0.SAV до 177777.SAV, здесь только необходимо будет учитывать ограничение на невозможность использования в именах запускаемых файлов ничего кроме цифр. Но если я правильно понял ТЗ хобота, ему такое ограничение не доставит неудобства.


может проще дизасемблировать оригинальный JS.SYSДык уж давно бы! Там объём-то с гулькин нос... Кстати, как называется файл дизассемблера для 11-го процессора и где его взять?

form
18.12.2016, 07:00
Кстати, как называется файл дизассемблера для 11-го процессора и где его взять?
Тупой дизассемблер (дизассемблит все подряд не разбирая) где-то здесь выкладывал (как для RT-11 так и для UNIX/Win). Можно искать по слову дизассемблер. Есть DISSAV, ориентированный конкретно на SAV файлы RT-11 (взять можно на ftp://ftp.dbit.com/pub/pdp11/rt11/). Есть DOB, ориентированный на OBJ файлы - он есть вживую на CTAKAH (http://pdp-11.org.ru/hecnet.pl)'е, исходники доступны там же в SW:[DOB2]. IDA вроде тоже умеет дизассемблить SAV'ы.

Alex_K
18.12.2016, 17:19
Вот это лишний функционал 100%
Странно, что лишний функционал. Вроде бы он обеспечивает перезапуск оболочки по кругу, как того требует техническое задание. Ниже рассмотрим поподробнее.

- - - Добавлено - - -


ТЗ: Я предлагаю нашим профи помочь в создании более совершенного драйвера по типу JS.SYS,
а именно
1.Программа должна по команде SE JS ON запускать прописанный внутри неё исполняемый файл - без глюков как классический JS.SYS
2.Желательно имя запускаемого файла сделать параметром типа SE JS SFN(Start File Name)=/тут шесть символов имя файла - проверка на правильность не требуется, на совести оператора!!!/ у старого JS имя файла надо править при помощи DESSа к примеру
3.Не мешать запущенной программе работать и передавать управление приложениям директивой
.CHAIN
4.По завершению этих приложений снова стартовать прописанный SFN
1. Драйвер AC при настроенном параметре SET AC COM и при вызове SET AC ON позволяет запускать без глюков исполняемый файл SY:ACM.SAV.
2. Второй пункт желателен, но желателен это значит, что не обязателен. Да, настройки запускаемого имени файла в AC.SYS нет, всегда запускается SY:ACM.SAV.
3. Драйвер AC естественно никому не мешает, на .CHAIN не реагирует, он реагирует только на вывод промптера KMON-ом.
4. Вот здесь у AC идеальный порядок, в отличии от JS. JS.SYS я видел две версии. Первая реагирует на EMT 350, в итоге она не дает этому EMT выполнить всю нужную работу по завершению текущей задачи, да и к тому же прервет любой командный файл. Вторая версия получше и реагирует на EMT 351 в области KMON с командой MOV R5,R5 после этого EMT, вроде бы нормально, но такую команду KMON выдает не только на вывод промптера, но и на ввод недостающих параметров, например ввели команду COPY без параметров, так вот этот JS не даст вывести запрос "From?", а запустит оболочку.
Драйвер AC реагирует только на вывод промптера KMON для ввода команды, потому при нем нормально отработает командный файл, даже если он был запущен с параметром SET TT NOQUIET, т.е. с выводом команд на экран. При исполнении командного файла драйвер AC не реагирует на промтер KMON для запуска, только, если настроено, меняет его вид.

form
18.12.2016, 17:43
Еще один вариант на закуску - скрытый драйвер. Особого смысла нет - просто побаловаться если есть интерес. Принцип такой: некая команда SET (или запуск драйвера по RUN или еще какой вариант на этапе подготовки дискеты) ищет во вторичном загрузчике команду MOV @#177570,R4 перед которой идет инструкция BR. Эта конструкция одинакова во всех RT-11 как минимум начиная с V4.0 (с оговоркой). Меняем BR на NOP, а MOV меняем на MOV #157400,R4 (значение по надобности скорректировать). В результате получаем во время загрузки зарезервированное окно куда уже драйвер из инсталционной процедуры может вписаться. Ну и оговорка (вернее две): метод не подойдет для mapped мониторов - там просто нет этого кода в загрузчике. Также в старых мониторах следующей после MOV командой идет BIC #3777,R4 - это легко проверить и поставить два NOPа. От обычного драйвера отличается только тем, что требует чуть-чуть меньше памяти (за счет экономии на служебных словах вначале и в конце драйверва).

Alex_K
18.12.2016, 17:49
Еще один вариант на закуску - скрытый драйвер.
Будет отъедать память у системы, т.е. если функционал AC или JS не нужен, то память не будет задействована. Также не сработает, если кто-то запустит на ДВК с включенным ПЗУ Бейсика, там память ограничена 48 Кбайт до 0140000.

form
18.12.2016, 18:00
Будет отъедать память у системы, т.е. если функционал AC или JS не нужен, то память не будет задействована.
Да, этот минус есть, но по условиям задачи как я понимаю отключать все это не требуется, а если нужно - отключается легко (но с перезагрузкой). При использовании же перехватчика, наоборот памяти будет немного больше чем если использовать драйвер.


Также не сработает, если кто-то запустит на ДВК с включенным ПЗУ Бейсика, там память ограничена 48 Кбайт до 0140000.
Отлично сработает. Никто не мешает проверить сколько памяти есть (или явно указать) и считать исходя из этого.

Но, как уже написал - это скорее баловство чем реальная идея (впрочем сам вопрос который поднят по-моему тоже :)).

- - - Добавлено - - -

Еще как вариант: просто меняем вторичный загрузчик на свою программу (а места для нее ого-го! хоть простенькую операционку запихивай), а уже эта программа позволяет или ввести пароль и загрузиться нормально или загрузиться вышеописанным способом. Кстати можно и не вышеописанным, а с тем же драйвером AC: просто меняем ему слово 60 так чтобы он (не)инсталился (но это сложнее - придется подгружать драйвер для записи, хотя 4 блока под программу - и не то можно наваять :)).

Alex_K
18.12.2016, 18:11
При использовании же перехватчика, наоборот памяти будет немного больше чем если использовать драйвер.
Немного больше, на несколько слов, что резервируются макрокомандами .DRBEG, .DRFIN, .DREND, ну и несколько команд обработки очереди ввода-вывода. Но у драйвера универсальность настройки параметров, да и не нужен, то взял и выгрузил.

- - - Добавлено - - -


Еще как вариант: просто меняем вторичный загрузчик на свою программу (а места для нее ого-го! хоть простенькую операционку запихивай), а уже эта программа позволяет или ввести пароль и загрузиться нормально или загрузиться вышеописанным способом. Кстати можно и не вышеописанным, а с тем же драйвером AC: просто меняем ему слово 60 так чтобы он (не)инсталился (но это сложнее - придется подгружать драйвер для записи, хотя 4 блока под программу - и не то можно наваять ).
Свой вторичный загрузчик - это уже изврат. А про пароль hobot жаловался, что мол выводится запрос, а его не прервать, хотя снять пароль в JS.SYS просто.
К тому же вторичный загрузчик делает всю основную работу - грузит системный драйвер, RMON, настраивает все адреса, инсталлирует драйверы.

form
18.12.2016, 18:22
Свой вторичный загрузчик - это уже изврат.
Чего же тут извратного - достаточно простое решение.


К тому же вторичный загрузчик делает всю основную работу - грузит системный драйвер, RMON, настраивает все адреса, инсталлирует драйверы.
Что абсолютно не требуется от программы которая его заменит в блоках 2-4: всю эту работу выполнит родной вторичный загрузчик в штатном режиме - цели заменить его совсем нет. Я вот даже придумал как ничего не трогая на диске и не подгружая драйвер сообщить драйверу AC или какому там еще нужно или нет включаться. Сейчас вот только додумываю реализацию (вопрос скорее привлекает не с практической точки зрения, а с точки зрения покопаться в дебрях системы)...

Alex_K
18.12.2016, 18:30
и не подгружая драйвер сообщить драйверу AC или какому там еще нужно или нет включаться.
Это в каком смысле? Хотелось бы узнать подробности.

form
18.12.2016, 18:45
Это в каком смысле? Хотелось бы узнать подробности.
Подробности простые: во втором слове конфигурации системы есть бит XITSW$ (настройка SET EXIT NOSWAP). К примеру драйвер проверяет этот бит из подпрограммы инсталяции и не инсталится если бит установлен. В загружаемой системе он всегда очищен (вариант пропатченой вручную системы не рассматриваем). Сложность состоит в том, что наша программка работает до того как запустился вторичный загрузчик и RMON в памяти еще нет. Ну а возможное решение сейчас обдумываю (через блок битов конфигурации) - его легко найти и он не менялся (там очень важен порядок).

Alex_K
18.12.2016, 18:48
К примеру драйвер проверяет этот бит из подпрограммы инсталяции и не инсталится если бит установлен.
А смысл по отношению к AC? Весь свой функционал он раскрывает только по команде SET AC ON, INS AC и даже LOAD AC ничего не дадут.

form
18.12.2016, 18:54
А смысл по отношению к AC? Весь свой функционал он раскрывает только по команде SET AC ON, INS AC и даже LOAD AC ничего не дадут.
AC как таковой тут не причем и смысла как такового (как и в самом вопросе который решается) нету. Просто я сам себе поставил вопрос: передать драйверу информацию и сам себе на него ответил :) Решение со своим вторичным загрузчиком которое позволяет как грузить систему обычным образом так и с включенным драйвером менюшки есть. Жаль только ничего особенного при этом не выкопал: решение элементарное - даже скучно :)

- - - Добавлено - - -

То есть к AC или любому другому драйверу это относится так, что драйвер, запускаемый из стартового файла той же командой SET ON может получить информацию запускаться ему или нет.

Alex_K
18.12.2016, 18:57
То есть к AC или любому другому драйверу это относится так, что драйвер, запускаемый из стартового файла той же командой SET ON может получить информацию запускаться ему или нет.
А смысл? Ведь если в стартовом файле стоит команда SET AC ON, то значит надо запускаться.

form
18.12.2016, 19:00
А смысл? Ведь если в стартовом файле стоит команда SET AC ON, то значит надо запускаться.
Смысл ровно такой же как и у команды SET AC ON в стартовом файле: никакого кроме "так захотелось". Я просто поставил себе вопрос (даже не касаемо данной темы - у меня ведь еще boot menu есть в запасе которым я так и не занимался больше, да мало ли еще какие идеи будут) - можно ли из программы, запускающейся до того как загружена система передать информацию драйверу который будет устанавливаться в этой системе. И сам ответил на него: да, можно, при том совершенно элементарно. Все. Никакого смысла не искалось :)
То есть вопрос про пароль который поднимался решается легко и не требует дополнительной памяти - это если таки хочется смысл увидеть :)

hobot
19.12.2016, 10:18
Alex_K, в ссылках на моё ТЗ, описании функционала AC.SYS на определённом этапе произошла путаница.
Но похоже мне уже не оправдаться ) Просто относительно AC.SYS было и есть совсем другое ТЗ (в другой теме
пару лет назад). Проехали. Лучше расскажите какой и для чего планировалась оболочка AC и почему не стали
делать? Или я снова что то пропустил?

В целом такого количества упоминаний [hobot] (чуть не в каждом посте) давно я не видел. Но это привело к тому,
что так или иначе мне приписали некоторые вещи которых я не делал не писал и не говорил. Я оказался в позе
http://2.bp.blogspot.com/-7MZCAhfKx3E/VmILLdphKCI/AAAAAAAAJSA/yGIrAGx-UhE/s1600/illjustracija-roman-Master-i-Margarita-Pontij-Pilat-Ieshua-hudozhnik-Iwan-Kulik.jpg

На самом деле, драйвер от Олега (новоиспечённый) первичные испытания прошёл успешно.
И да, AC.SYS - похоже универсал, тем больше смысла править для поддержки совр.дат или
убрать календарное приветствие как "апендикс". Обсуждение - лично для меня получается
(получилось) просто сверх интересным ! Но если он (драйвер AC.SYS) используется для правильного (чит.удобного) системного приглашения - всё остальное логично же ! - лишний функционал.

что касается "нельзя настроить изменить"
ACM.SAV - изменить можно с помощью DESS - это ведь и есть имя запланированного shell ?

http://pic.pdp-11.ru/thumbs/acmsav1.png (http://pic.pdp-11.ru/?v=acmsav1.png)

http://pic.pdp-11.ru/thumbs/acmsav2.png (http://pic.pdp-11.ru/?v=acmsav2.png)

- - - Добавлено - - -


А про пароль hobot жаловался, что мол выводится запрос, а его не прервать, хотя снять пароль в JS.SYS просто.
Вот к примеру - я нигде никогда на пароль не жаловался ) Я прикинул в своём тексте - если его легко обойти на дисководах
(любых), то на разделе ЖД его так просто уже не победить. В целом сочинительство всяческих паролей под RT-11 думаю
пустая трата времени, либо пароль на старт машинки в целом, либо никакого. Все остальное бесполезное есть.
Это не касается старших систем где всё иначе совсем.

form
19.12.2016, 13:52
Немного баловства. Я знаю, hobot'у понравится :)
Образ загрузочной дискеты для УК-НЦ здесь (http://pdp-11.org.ru/~form/files/pdp-11/rt-11/kaka/mzc.dsk). Это просто наметка, полный функционал (возможность вводить пароль который используется для шифрования/расшифровки) достигается дополнительной программкой (ее можно вставить и в драйвер).

Суть баловства: образ диска полностью "шифрованный" (кроме блоков 0-5). Если из под этой системы создать новый диск - он также будет шифрованным (при этом системным драйвером на такой дискете должен выступать MC.SYS вместо MZ.SYS), а система должна быть новее 5.01. Чтобы прочитать/записать нешифрованный диск, нужно обращаться к номерам устройств 4-7 (они будут соответствовать нешифрованным 0-3). Да, драйвер требует системы с поддержкой device timeout (вроде такая была на пробной дискете с JS). Это не ограничение - просто лень сейчас пересобирать - пива хочется ;)

Ну а "шифрованный" потому что алгоритм назвать шифрованием можно только с большой натяжкой :D


.DIR STRTFB/BLO
19-Dec-2016
STRTFB.COM 1 19-Dec-2016 1261
1 Files, 1 Blocks
338 Free blocks

.DUM/TER/ONL:1261. MC0:
MC0:
BLOCK NUMBER 002355
000/ 042523 020124 052124 050440 044525 052105 005015 020122 *SET TT QUIET..R *
020/ 052124 042523 020124 051457 006514 051012 042040 052101 *TTSET /SL..R DAT*
040/ 006505 051412 052105 052040 020124 047516 052521 042511 *E..SET TT NOQUIE*
060/ 006524 000012 000000 000000 000000 000000 000000 000000 *T...............*
100/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
120/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
140/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
160/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
200/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
220/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
240/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
260/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
300/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
320/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
340/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
360/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
400/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
420/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
440/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
460/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
500/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
520/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
540/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
560/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
600/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
620/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
640/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
660/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
700/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
720/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
740/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
760/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*

.DUM/TER/ONL:1261. MC4:
MC4:
BLOCK NUMBER 002355
000/ 161175 103572 171572 173016 167173 171553 126443 103574 *}bz.zs.v{nks#-|.*
020/ 171572 161175 103572 172001 125142 172444 161416 171557 *zs}bz..tb*$u.cos*
040/ 125153 172044 171553 171416 103572 164140 171177 161147 *k*$tks.sz.`h.rgb*
060/ 125172 123444 000000 000000 000000 000000 000000 000000 *z*$'............*
100/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
120/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
140/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
160/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
200/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
220/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
240/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
260/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
300/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
320/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
340/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
360/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
400/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
420/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
440/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
460/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
500/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
520/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
540/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
560/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
600/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
620/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
640/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
660/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
700/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
720/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
740/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*
760/ 000000 000000 000000 000000 000000 000000 000000 000000 *................*

.

hobot
19.12.2016, 18:47
первые впечатления

http://pic.pdp-11.ru/thumbs/20161219151730875.png (http://pic.pdp-11.ru/?v=20161219151730875.png)

Я на "свежую в моём понимании голову" отпишу.

Кстати говоря, вспомнил, один из мощных ассемблерщиков по общему прошению сделал
программу в школе соседней - называлась она DP.SAV и на старте выдавала * чем запрашивала
имя SAV файла. DP - от DESS PTOTECTION - обработанный файлик в DESS начинал выглядеть
как "куча мусора". В начале все обрадовались - вот ура - мы сейчас запротектим файлы,
никто не будет править там "Клингонов" на "Семижопов", но быстро выяснилось неприятные ограничения

1. Системные файлы умирали после обработки (.SYS DP - было низя!)
2. Не все .SAV после обработки продолжали успешно запускаться и работать (некоторые да, но не все).
3. Обратная процедура (по моему была написана, точно не помню "снятие защиты") то же могла попортить
файлик ещё сильнее
4. Всем стало скушно и тогда кто то попросил написать "защиту" текстовых файлов от правки )))

Весело было !
Я тогда писал "квест-приключение" на ВИЛЬНЮС-БЕЙСИКЕ на РМУ - у меня даже ни одной дискеты своей не было )))
Позже позже всё появилось...

Мне понравилась идея

просто меняем вторичный загрузчик на свою программу
вот это действительно мощно звучит, потому что при старте некоей рабочей среды с дискеты или ЖД
(скорее всего с дискеты УК-НЦ) может подмять под себя все ресурсы машинки, убрали все УСТ и СТОП,
настроить палитру и разместиться в памяти в компании нужных "инсайдеров" )
Разве не нечто такое проделали авторы пакета игр от ИТО ?
И знаешь, очень похожая софтина в виде исходников (причём рабочая) составляла основу Зеленоградского
спрайтового движка для МАКРО-11 и ПАСКАЛЯ (речь не об UKLOADдля УК-НЦ и конечно не о LOAD для КЦГД)- только вот её то как раз и нету иначе я бы просто показал
как это выглядит (красиво).

- - - Добавлено - - -


Образ загрузочной дискеты для УК-НЦ здесь.
кстати при первой загрузке выдаёт три строки о неустановленных DUn устр-ах.
при вторичной уже не выдаёт (уже помечены #???- что бы не обращался не искал).

form
19.12.2016, 18:53
кстати при первой загрузке выдаёт три строки о неустановленных DUn устр-ах.
при вторичной уже не выдаёт (уже помечены #???- что бы не обращался не искал).
Просто копировал со своей системы, остались подключенный LD, при загрузке он их чистит.
Я новый образ подготовил, залью через пару минут - там уже с паролем (он участие принимает в шифровании) и программа прописывания своего загрузчика (он собственно и спрашивает пароль при загрузке).

hobot
19.12.2016, 19:15
он собственно и спрашивает пароль при загрузке).
А если ему Ошибку чтения сделать ) Механически, он проскочит на след. в загрузке шаг? ишлёп закрыть привод что бы не шуршал, а дальше читал?

form
19.12.2016, 19:23
Новый образ (http://pdp-11.org.ru/~form/files/pdp-11/rt-11/kaka/mzc2.dsk). В нем уже при загрузке спрашивается пароль, и если он неправильный - при загрузке не найдется файл монитора. Пароль образа 123456.
Он же будет паролем для созданных из загруженной с него системы образов на MC0-MC3.
Пароль - восьмеричная цифра 16 бит - лень было заморачиваться (0 или ничего - нет шифрования) ;)

Для смены пароля нужно провернуть хитрый маневр:
.COP/DEV/NOQ SY: MC5:

.BO MC5:

RT-11FB (S) V05.07

Password:

RT-11FB (S) V05.07

?DATE-I-Date & time - 19-DEC-2016 23:07:26

.COP/DEV/NOQ SY: MС:

.BO MC:

RT-11FB (S) V05.07

Password:

RT-11FB (S) V05.07

?DATE-I-Date & time - 19-DEC-2016 23:07:47

.
В данном примере шифрованный диск стоит в MZ0: (MC0 в системе), в приводе MZ1 стоит временный диск. При копировании на него мы используем MC5: (это запрещает шифрование), а при загрузке с MC5: вводим новый пароль, с которым и копируем диск обратно.

В образе лежат два драйвера MC: MC.SYS (требует поддержки device timeout) и MCNT.SYS (не требует). В случае если будет ошибка "Conflicting options" подойдет другой :)

Создание нового загрузочного диска (можно с другой системой новее 5.01) происходит как обычно, но после команды COP/BOO нужно запустить программу MCBOOT с указанием данного диска, например
.COP/BOO MC1:RT11SJ MC1:

.MCBOOT MC1:

Если диск создается из под системы с обычным драйвером MZ, то используем команду COP/BOO:MC для копирования загрузчика, а грузим устройство под номером x+4 где x - номер привода 0,1,2,3 (мой простой драйвер MZ как раз нормально относился к таким номерам [или можно при загрузке ввести пустой пароль, а уже из под новой системы загрузить MCx+4: и ввести пароль для создаваемых дисков]). Если шифрованный диск грузится из под системы без шифрования (или из под системы с другим паролем), нужно использовать команду BOO/FO.

Уф. Понаписал-то... Самому бы понять :D

- - - Добавлено - - -


А если ему Ошибку чтения сделать
Хорошо, что ты спросил :)
При ошибках чтения во время загрузки будут проблемы - я там не дописал фрагмент который повторы правильно делает, так, что скорее всего просто ничего не получится.
Проскочить шаг не удастся: пароль - это ключ к шифрованию (и нигде не хранится [в отличие от первого образа :D]), и если он неправильный, то и прочитается хрень всякая :)
Но если есть под рукой дизассемблер и свободное время, то понять метод шифрования и расшифровать все не зная ключа труда не составит :)

Alex_K
19.12.2016, 19:48
Лучше расскажите какой и для чего планировалась оболочка AC и почему не стали
делать? Или я снова что то пропустил?
Собственно я когда-то и планировал его для оболочки, что-то наподобие Norton Commander-а. Но до неё руки так и не дошли. Делал я только меню запуска игрушек. Тогда дома УКНЦ у меня не было, работал в классе на НГМД-6022, соответственно было 4 дискеты с игрушками и с меню запуска (файл меню соответственно ACM.SAV).

- - - Добавлено - - -


И да, AC.SYS - похоже универсал, тем больше смысла править для поддержки совр.дат или
убрать календарное приветствие как "апендикс". Обсуждение - лично для меня получается
(получилось) просто сверх интересным ! Но если он (драйвер AC.SYS) используется для правильного (чит.удобного) системного приглашения - всё остальное логично же ! - лишний функционал.
Ну делался драйвер в 1992-1993 годах, RT-11 я видел максимум версии 5.4, документации толком не было, ну про интернет и говорить не стоит, да и о проблеме Y2K особо ещё никто не говорил. Это насчет поддержки дат, я потому и был уверен, что максимум 1999 год.
А что за календарное приветствие?

Так как драйвер создавался изначально для запуска оболочки, а в качестве условия запуска я решил, что лучше всего перехватывать вывод промптера KMON, а не EMT 350. В этом случае получалось всё честно. Чтобы понять как перехватывать KMON пришлось его дизассемблировать, да ещё дизассемблировал и драйвер SL V08.00 Сторожевых. А так как делался перехват промптера, то уже и возникла идея его изменить, что бы настраивать как в MS-DOS. Так что основная функция это запуск оболочки, а изменение вида промптера стало побочной функцией.

form
19.12.2016, 20:00
вывод промптера KMON, а не EMT 350.
EMT 350 перехватывать бесполезно. Проверка показала, что он не всегда выполняется - вероятно где-то просто делается прямой переход на соответствующую подпрограмму.

- - - Добавлено - - -


KMON пришлось его дизассемблировать
Это издержки последних лет. Поначалу у всех под рукой всегда был дистрибутивный кит с исходниками, а потом видимо было решено (у нас), что это роскошь - давать возможность настроить систему под себя :)
А может просто не хотелось молодым показывать, что все новое в "наших" системах - это просто замена приветствия :)

Alex_K
19.12.2016, 20:05
EMT 350 перехватывать бесполезно.
Это я тогда понял. К тому же обработчик EMT 350 выполняет много действий по завершению задачи. А вот одна из версий JS.SYS для SCE работает таким образом.

- - - Добавлено - - -


Поначалу у всех под рукой всегда был дистрибутивный кит с исходниками
А вот у меня такого не было. Да и интернета не было в те времена, чтобы скачать RT11DV10.ISO или RT11DV50.ISO.

form
19.12.2016, 20:15
А вот у меня такого не было.
Ну на службе мне тоже попался с УКНЦами "наш" ФОДОС где только все пресобранное было. И тоже в виду отсутствия документации приходилось дизассемблировать. А так, до этого и RT-11V4 был и РАФОС (ну это по сути он же кроме /TS [хотя был еще с дурацкой авторизацией - тот возможно v3 был, и к нему как раз дистриба не было у нас]) с исходниками системы и RT-11V5.0.

- - - Добавлено - - -

А про SL (тот что от Сторожевых) в то время вспоминаю с ужасом... Мне его пришлось из ближайшей школы в г. Чехове копировать методом диктовки дампа и записи его от руки на бумагу с последующим восстановлением - бр-р :)

Alex_K
19.12.2016, 20:29
с последующим восстановлением
А чем восстанавливали?

form
19.12.2016, 20:37
А чем восстанавливали?
Самодельным редактором написанным тут же от руки (по воспоминаниям о DUP'е/PUD'е) :)
Кстати будет время - надо будет восстановить редактор. Не все же SIPP'ом пользоваться, а всякие PUD'ы да DESS'ы считают, что любой терминал - это VT52 (даже если искренне верят в обратное) :)

Alex_K
19.12.2016, 20:47
Самодельным редактором написанным тут же от руки (по воспоминаниям о DUP'е/PUD'е) :)
Кстати будет время - надо будет восстановить редактор. Не все же SIPP'ом пользоваться, а всякие PUD'ы да DESS'ы считают, что любой терминал - это VT52 (даже если искренне верят в обратное) :)
Неужто терминал не был совместим с VT52, а то DESS - очень удобная штука.

form
19.12.2016, 21:05
Терминал не был совместим с VT52
Сейчас не совместим - на VT200 как-то уже привычнее - не бегать же взад-вперед, тем более сейчас пока после переезда DECserver не используется - придется физически перетыкать :).
А в редакторах вроде DESS мне ничего ни разу не требовалось за пределами того, что до этого видел в DUP/PUD. Но я его и мало копал - по сути как раз в тот раз - когда надо было дамп SLя диктовать: простогу DUMP там не оказалось. Что запомнилось, так это явно RSXовское происхождение автора с соответствующей реакцией на CTRL/C :)

59051

- - - Добавлено - - -

Выложил туда же (http://pdp-11.org.ru/~form/files/pdp-11/rt-11/kaka/) исходники MC и MCBOOT - вдруг кому интересно будет. До ума доводить все-равно не стану :)

AFZ
20.12.2016, 10:23
DESS'ы считают, что любой терминал - это VT52 (даже если искренне верят в обратное)Видел DESS, работающий под VT100.

- - - Добавлено - - -


Сейчас не совместим - на VT200 как-то уже привычнее - не бегать же взад-вперед А "<033>[?2l" не помогает? У меня на винте всегда валялась пара программок VT52.SAV и VT100.SAV, которые переключали терминал в нужный режим.

form
20.12.2016, 10:27
А "<033>[?2l" не помогает?
Нет так как SL тут же позаботится об обратном, а полностью переходить в VT52 режиме неудобно - K52 и KED все-таки весьма разные :)

AFZ
20.12.2016, 10:41
Нет так как SL тут же позаботится об обратномТак командный файл. DESS.COM

VT52
DESS
VT100

form
20.12.2016, 13:03
Так командный файл. DESS.COM
Все это понятно, можно и UCL команду определить, но мне проще когда потребуется таки написать свою программу, чтобы можно было ее на втором терминале запускать, а также чтобы от терминала она вообще не зависела. DESS или PUD для этого не годятся - они в непрерывном цикле крутятся без остановки и не дадут работать параллельно на основном терминале.

- - - Добавлено - - -

Кстати DESS как оказалось непригоден для работы в XM/ZM - вылетает сразу при запуске из-за того, что пытается выделить элементы очереди в запрещенном адресном пространстве (PAR1). В VBGEXE можно запускать, но автозапуск в нем есть только в 5.6 и новее, в ранних надо явно писать.

hobot
20.12.2016, 13:33
Мне его пришлось из ближайшей школы в г. Чехове копировать методом диктовки дампа и записи его от руки на бумагу с последующим восстановлением - бр-р
Вот здесь хочется цитировать генерала из Нац.Охоты(Рыбалки) )))


form, а что вам дали с УК-НЦшками в Зеленограде. Кстати, а УК-НЦшки были обычные или с ромбиками? )))


А вот у меня такого не было.
Я помню от скуки выгребали время от времени все дискеты для МС0202 из несгораемого (это в школе) и
раз за разом проглядывали их в поисках "пропущенных кладов", что я помню - больше половина дискет
были ФОДОС, а ещё половина дискет были 40-дорожек там совсем ничего интересного не было.
ДВКашных дискет уже тогда не было (ну может парочка системных - её уже не включали в то время, а
БК (весь класс) куда то "изчез". Так вот все дискеты для УК-НЦ были отечественные (ГМД-что то там),
а RT-11 V5.0 видимо из школы где студия разработчиков было принесли как копии с их дискет уже на
Изотах и Вербатимах - не официально, просто сами тусовщики для себя софт тащили отовсюду. Там
много значимых в УК-НЦ тусовке людей имело неограниченное машинное время (в школе о которой я говорю),
поэтому и софта было много и у меня постепенно РМП дома образовался )
Среди притаскивания действительно очень много интересного было, просто сказочного по тем временам )




Выложил туда же исходники MC и MCBOOT
Я в личную коллекцию забрал. И вторую дискету ещё не смотрел даже ) И не все сообщения прочитал.
MC.SYS - это же имя "сетевого" драйвера стандартного для МС0202 )


А что за календарное приветствие?
Там же несколько настроек промта, среди них возможность выводить туда дату\время.
Либо норм. рабочую с совр. датами либо "лишний функционал", так я решил, полез
"вырезать" и снова полностью убитая программа на выходе ) Такой вот я Ассемблерщик )

- - - Добавлено - - -


нужно использовать команду BOO/FO.
принудиловка ) Предлагаю её использовать в будущем везде и повсюду где требуется 100% загрузки и есть 100%
уверенность, что принуждаемое устройство бутабельно )

- - - Добавлено - - -


оответственно было 4 дискеты с игрушками и с меню запуска
не поверите - видел их. там в комплекте файл настройки экрана display и шрифта, меню стартер для игр, который создаёт
на ходу список GME файлов. в общем видел - щупал.

Password: )))

form
20.12.2016, 13:36
а что вам дали с УК-НЦшками в Зеленограде
Они не дали, они продали - за свои деньги покупали вильнюс-бейсик потому что родной что шел в комплекте не работал с дисками :)
Хотя SYSMAC.SML вроде дали бесплатно, его тоже не было :)

- - - Добавлено - - -


принудиловка
Это не принудиловка - это неизбежность поскольку для сторонней системы на дискете просто нету каталога с файлами :)
Из системы с драйвером MC можно и без /FOR (разумеется если пароль введенный при загрузке совпадает с паролем дискеты) :)

hobot
20.12.2016, 13:40
Они не дали, они продали
а как же стандартный набор для БЫТОВЫХ ПРОМЫШЛЕННЫХ из пяти дискет + книжечка?
(правда это уже СЭМЗ 1990 и поставка с 220В машинкой) http://zx-pk.ru/threads/12877-soft-dlya-uknts.html?p=413894&viewfull=1#post413894

- - - Добавлено - - -

Да здравствует творческое и практическо-прикладное программирование под RT-11 ! )
Скучно не будет )

form
20.12.2016, 13:40
набор для БЫТОВЫХ ПРОМЫШЛЕННЫХ из пяти дискет + книжечка?
Это ты у МВО спроси откуда они что взяли :)

hobot
20.12.2016, 13:58
что-то наподобие Norton Commander-а
жаль, сейчас возможно имели бы норм. с ЖД работающий файловый менеджер.
PAF не дружит с ЖД полностью. Различные версии SCE глючат по разному (в серьёз не тестил,
поскольку не слишком то они удобные), а вот моноэкранные самое то оказалось.

- - - Добавлено - - -

Да! Но совсем совсем позднее появилась полностью Руссифицированная рабочая среда ADOS ! )
И для УК-НЦ (с костыльками) и для ДВК4 как родная для неё )

form
20.12.2016, 14:10
VT52
DESS
VT100
Кстати, тут тоже не так все прсто: DESS продолжает использовать SL внутри себя - будет мусор на подсказках ввода. Как вариант - запретить SL в нем (бит 10 в $JSW).

AFZ
20.12.2016, 18:54
Кстати, тут тоже не так все прсто: DESS продолжает использовать SL внутри себя Где? А, кажется вспоминаю... Макро .GTLIN отрабатывается тоже через SL, да? Или нет, скорее .CSISPC при запуске. Тогда только через UCL, чтобы в командной строке можно было сразу указать имя файла, который будем править или создавать. Там же можно разобраться и с ХМ-ными делами.

form
20.12.2016, 19:13
Макро .GTLIN отрабатывается тоже через SL, да? Или нет, скорее .CSISPC при запуске.
И .CSISPC и где-то там .GTLIN попадался потом - номер блока чтоли когда спрашивает. В принципе разобраться со всем этим несложно: можно добавить 20 к содержимому смещения 44 - это отключит SL для программы. Можно записать 200 по смещению 4, тогда если в системе использовалась команда SET RUN VBGEXE, программа автоматом запустится в VBGEXE (но это только в 5.6 и 5.7). Наконец можно заменить адрес для элементов очереди например на 500 (он их там просит 5 штук [куда ему столько?] - значит получится 500-577 будет занято под них) - это не будет нарушать правила XM. Ну и с VT52 в принципе можно разобраться - воткнуть печать <ESC>'[?2l'<ESC>'\' после ввода CSI и восстановление перед вводом CSI...

Кстати DESS который лежит в архиве уже не тот, что я видел в советское время - тот на нажатие CTRL/C писал подсказку MCR> как в RSX :)
Надо проверить - может он и не грузит систему как сумасшедший - тогда вполне пригодная штука получится.

Alex_K
20.12.2016, 21:15
Там же несколько настроек промта, среди них возможность выводить туда дату\время.
Либо норм. рабочую с совр. датами либо "лишний функционал"
По поводу Y2K, то да, AC.SYS с этим не совместим, ну делался он в 1992-1993, не было тогда такой проблемы. Ну а после я и не переделывал, последние версии 5.6 и 5.7 уж слишком много памяти пожирают, 5.0 и 5.1 маленькие и пошустрее.

- - - Добавлено - - -


не поверите - видел их. там в комплекте файл настройки экрана display и шрифта, меню стартер для игр, который создаёт
на ходу список GME файлов. в общем видел - щупал.
Не могли вы видеть этих дискет, я их никуда и никогда не выкладывал. К тому же GME - это файлы эмулятора БК для УКНЦ.

form
20.12.2016, 21:22
последние версии 5.6 и 5.7
В 5.6 тоже нет поддержки Y2K, хотя в документации упоминание уже появилось.

Alex_K
20.12.2016, 21:32
Кстати, тут тоже не так все прсто: DESS продолжает использовать SL внутри себя - будет мусор на подсказках ввода. Как вариант - запретить SL в нем (бит 10 в $JSW).
Ну тот, который у меня (19 блоков) использует EMT 345 только для запроса имени файла. Более нигде EMT 344 и EMT 345 нет. Проверил при запросе адреса, блока, строк поиска - нигде SL не использует.

- - - Добавлено - - -


В 5.6 тоже нет поддержки Y2K, хотя в документации упоминание уже появилось.
А как же в AA-PD6LA-TC_RT-11_System_Macro_Library_Manual_Aug91.pdf в описании макроса .DATE уже упоминается поле Age, которое нужно помножить на 32, прибавить 1972 и прибавить год, находящийся в битах 4-0.

form
20.12.2016, 21:39
Проверил при запросе адреса, блока, строк поиска - нигде SL не использует.
Да, показалось. Зато выявил другую проблему: перевод в режим VT52 последовательностью <ESC>/[?2l/ не переключает режим клавиатуры - она остается ANSIшной (на живом VT220 вроде все переключалось, но сейчас лень его доставать). А так - уже сделал патч который выключает режим VT52 при вводе строки CSI, включает после и выключает при выходе. Попутно выяснил еще один момент: CSI вызовы нельзя выполнять из памяти ниже 1000...

Кстати на первый взгляд есть там один косяк: размер устройства берется только из .DSTAT (впрочем содержимое JSW наводит на мысль о том, что программа писалась для RT-11 V4 (или скорее для РАФОС'а), а потому просто не знает про VARSZ$

- - - Добавлено - - -


А как же в AA-PD6LA-TC_RT-11_System_Macro_Library_Manual_Aug91.pdf в описании макроса .DATE уже упоминается поле Age, которое нужно помножить на 32, прибавить 1972 и прибавить год, находящийся в битах 4-0.
Это обычное дело для DEC - заранее расписать то, что еще только будет.
Более того, у них даже софт иногда включал поддержку того, что только планировалось выпустить (а иной раз потом так и не было выпущено).

Alex_K
20.12.2016, 21:47
Кстати на первый взгляд есть там один косяк: размер устройства берется только из .DSTAT (впрочем содержимое JSW наводит на мысль о том, что программа писалась для RT-11 V4 (или скорее для РАФОС'а), а потому просто не знает про VARSZ$
Да, есть такое. Тоже с таким сталкивался. Драйвер жёсткого диска WD объявляет размер в 1 блок, но он VARSZ$. В итоге наберете DESS WD0: и доступен только нулевой блок.
Но правда есть ещё версии DESS, надо те пощупать.

- - - Добавлено - - -


Это обычное дело для DEC - заранее расписать то, что еще только будет.
Глянул в AA-PDU0A-TC_RT-11_Commands_Manual_Aug91.pdf команду DATE, действительно, никаким Y2K не пахнет.

form
20.12.2016, 22:52
Но правда есть ещё версии DESS, надо те пощупать.
Да вобщем-то и эту нетрудно поправить. Может доберусь попозже.

- - - Добавлено - - -


Да вобщем-то и эту нетрудно поправить.
Выложил сюда (http://pdp-11.org.ru/~form/files/pdp-11/rt-11/dess/) поправленный вариант, оригинальный вариант и SIP файл для переделки старого в новый. Добавлен запрос размера у VARSZ устройств.

Попутно выяснил, что DESS прекрасно чувствует себя на втором терминале и не мешает жить основному (PUD в виду непрерывного цикла EMT/BCS эффективно блокирует консоль).

http://pdp-11.org.ru/~form/files/pdp-11/rt-11/dess/dess-mt.png

hobot
21.12.2016, 05:09
5.0 и 5.1 маленькие и пошустрее.
Я им DIR от патченой Олегом 5.3 подсунул и любой по выбору современный обработчик даты.
"Как бы" всё нормально ) ПКМ при печати каталога нету унылых БЭДов )


Более того, у них даже софт иногда включал поддержку того, что только планировалось выпустить (а иной раз потом так и не было выпущено).
Энтузиасты же! Вот скажи что нужно физически что бы прикруть к RT-11 поддержку OpenGL устройств?
Как то по ламерски звучит. Попробую так : что нужно за уши притащить в первую очередь API ?
Портировать по RT-11 или с нуля писать надо, на чём (третий вариант вопроса) несуществующий OpenGL-видеодрайвер для RT-11 базироваться должен. К примеру расширение Gray для УК-НЦ делает его практически = КЦГД, но
требует первоначального запуска (в память) некоего обслуживающего все эти вещи приложения.
Я тут (для меня лично большой сюрприз) обнаружил, что оказывается в ПЗУ УК-НЦ есть подпрограммы
графических примитивов (круг квадрат точка и т.д.) получается нужно только уметь достучаться?
Это видимо и есть - то заявленное в тз к УК-НЦ возможности КЦГД !




Выложил сюда поправленный вариант, оригинальный вариант и SIP файл для переделки старого в новый. Добавлен запрос размера у VARSZ устройств.

Попутно выяснил, что DESS прекрасно чувствует себя
О! Вот и DESS прокачали ) Ну просто праздник какой-то.

- - - Добавлено - - -


Выложил сюда поправленный вариант,
Симптом! Попробовал сразу (поскольку любимая программа) в UKNCBTL
при выходе по Q теперь либо "Двойное зависание" либо "@@@СТОП@@@"
без реакции на клавиатуру? Вопрос - правка вводит ограничение на
версию RT-11 под которой запускать правленный вариант?
Стандартный работал под любой (

- - - Добавлено - - -

Помимо 19 блочного есть ещё 22 блочный вариант, но что то с ним было не так, а есть и вовсе маленькие DESSики )))

- - - Добавлено - - -

Запустил попутно 20 блочный DESS, он добавляет к режимам просмотра WORD, BYTE, RAD50 ещё и HEX !
Нормально видит разделы WD - полностью, но (скотина) не переключается стандартной комбинацией кнопок
в ASCII окошко, номера версии не содержит.

DESS 0.5e, но 18-блоков управление классическое и видит WD-полностью !!!

form
21.12.2016, 07:17
прикруть к RT-11 поддержку OpenGL устройств?
Прикручиваешь PC к машинке, используешь как периферийный процессор OpenGL :)


Вопрос - правка вводит ограничение на
версию RT-11 под которой запускать правленный вариант?
Правка добавляет только вызов запроса размера диска. Если падает, то и оригинал скорее всего падал бы.


Запустил попутно 20 блочный DESS
Дай ссылку - посмотрим.


DESS 0.5e, но 18-блоков управление классическое и видит WD-полностью !!!
Это значит что в драйвере WD который используется просто прописан не нулевой размер по умолчанию. DESS при этом видит не весь WD, а ровно столько блоков сколько по умолчанию прописано. Для всех дисков даже если они разного размера.

hobot
21.12.2016, 08:10
Дай ссылку - посмотрим.
Вот сюда сейчас вставлю\добавлю ссылку на образ с разными DESS.
После патча увы 19-хоть и стала блоки WD раздела листать, а толку
если она по F,Q крашит всё и себя и сессию ))) То есть изменения
не сохранить.

Это значит что в драйвере WD который используется просто прописан не нулевой размер по умолчанию. DESS при этом видит не весь WD, а ровно столько блоков сколько по умолчанию прописано. Для всех дисков даже если они разного размера.
Возможно, но 19 блочный до крахо-патча видел только нулевой )))

- - - Добавлено - - -

Вот нахрапом разные версии, особенности см. пред пост
http://archive.pdp-11.org.ru/vid/razborki_s_DESS.dsk

Возможно были ещё есть ещё версии.
Описания перепутаны поскольку внутри не указаны версии программы,
поэтому их не прикладываю.



Image : razborki_s_DESS.dsk

Format : DSK
Size : 800 Kb

Volume ID: RT11A
Owner :

File Blocks Date Bytes
---------- ------ ----------- ----------
DESS22.SAV 22 23-Feb-1987 11'264
DESS11.SAV 15 30-Jun-1993 7'680
DESS16.SAV 16 17-May-1993 8'192
DESS19.SAV 19 04-Mar-1994 9'728
DESS5E.SAV 18 09-Mar-1988 9'216
DESS7 .SAV 20 04-Nov-1993 10'240
DESS8 .SAV 19 24-Apr-1987 9'728
< UNUSED > 1457 745'984
---------- ------ ----------- ----------
7 Files, 129 Blocks
1457 Free blocks


- - - Добавлено - - -

не исключаю, что на БК11М как переиначенный слегка RT-11 монитор 5.2 так и возможно DESS с какой-то спецификой

form
21.12.2016, 08:15
нахрапом разные версии
Посмотрю на досуге. Та, что смотрел перед этим явно заточена под RT-11V4 (ну или информации другой у автора не было).

AFZ
21.12.2016, 09:58
(на живом VT220 вроде все переключалось, но сейчас лень его доставать) На КЦГД все переключается правильно, а его тянули не то с VT220, не то с VT240, так, что на живом все будет переключаться правильно. А где не переключается?

form
21.12.2016, 18:30
А где не переключается?
SecureCRT. Возможно дело в старой custom раскладке клавиатуры - на досуге посмотрю.
Хотя вопрос по сути уже не интересен - раз DESS не грузит систему в 100%, я его могу запускать на втором терминале куда эмулятор VT52 отлично подключается :)

- - - Добавлено - - -


Посмотрю на досуге.
На первый взгляд (не глядя во внутренности) сразу заинтересовали два варианта:
DESS16.SAV - версия 6.0
DESS7.SAV - версия не показывается, зато показывается имя файла и его размер, русифицирован частично

Оба варианта нормально запускаются в XM без использования VBGEXE, оба умеют определять размер устройств VARSZ.

- - - Добавлено - - -

А секрет работы в XM/ZM без полной вритуализации прост. У программы всего один элемент очереди который дается по умолчанию. Зачем старым вариантам нужно было еще дополнительно 5 - загадка - вроде параллельного I/O и операций с таймером в DESS нет.

http://pdp-11.org.ru/~form/files/pdp-11/rt-11/dess/dess7.png

AFZ
21.12.2016, 18:49
Зачем старым вариантам нужно было еще дополнительно 5 - загадка Планировали что-то, потом не состоялось...

2ALL: А все в курсе, что DESS'ом можно в памяти ковыряться? Если не указать ни файл, ни устройство, он редактирует память с нулевого адреса. Я, помнится, что-то в RMON'е в свое время ковырял, SJ/FB, естественно. Только осторожно - изменения применяются мгновенно!..

form
21.12.2016, 18:56
А все в курсе, что DESS'ом можно в памяти ковыряться?
Только весьма ограниченно похоже - высоко не пускает. Или команда выбора блока для памяти не годится.

- - - Добавлено - - -


Планировали что-то, потом не состоялось...
Это большие планы: 5 параллельно идущих I/O запросов и/или запросов таймера (последнее впрочем сомнительно - народ в основном писал проги под базовый SJ похоже) :)
Навскидку могу предположить печать на принтер параллельно работе, но на большее фантазии не хватает. 5 все же многовато :)

Alex_K
21.12.2016, 19:03
Только весьма ограниченно похоже - высоко не пускает. Или команда выбора блока для памяти не годится.
Да по всем 56К пускает и выбирать можно как по номеру блока (B), так и по адресу (A). Но есть глюк - если в последних адресах дизассемблированная команда выходит за адрес 160000, то возникает TRAP4.

form
21.12.2016, 19:04
Да по всем 56К пускает и выбирать можно как по номеру блока (B)
А, ну он наверное просто считает, что выше 157(o) блока всегда I/O page, а я наверное туда и попытался посмотреть :)

Alex_K
21.12.2016, 19:20
А, ну он наверное просто считает, что выше 157(o) блока всегда I/O page, а я наверное туда и попытался посмотреть :)
А что, хотели все 4 метра памяти с помощью DESS увидеть?

form
21.12.2016, 19:27
А что, хотели все 4 метра памяти с помощью DESS увидеть?
Зачем 4 - как раз 64Kb - в моем случае для DESS 0-177776 - это обычная память.

hobot
22.12.2016, 05:15
form, а ты нащупал у выбранных тобой вариантов, по какой пимпе они переносят курсор в Ascii столбец?
У 19 блочного стандартное управление T - прыжки по командам, R - смена попеременная типа данных в основной
рабочей области, А = прыгнуть по адресу, B = прыгнуть в нужный блок Су+J перескочить в Ascii. |Поиск по модели и доп инфу я не помню как включал, но всё
это есть и если не ошибаюсь он может весь или выбранную часть в виде дизасма сохранять в отд. файл.
Такая вот ковырялочка и да без указания имени файла (кстати по умолчанию .SAV формат) кажет память.
(сразу вспомнил, что любой запрос вбитый в поиск и направленный в памяти в реальном времени всегда будет обнаружен !!! очень классный пример ) DESS выручает во многих случаях, к тому же я лет 5 им пользовался,
просто уже привык, а вот про штатные вещи я только тут на форуме узнал.

AFZ
22.12.2016, 08:32
hobot, напоминаю, что некоторым Hot Key должна предшествовать клавиша "Gold". В некоторых версиях DESS'а это ПФ1, в некоторых - ВЫБР (клава 7004, ДВК/Э-85, как на 15ИЭ/УКНЦ/в эмуляторах - не знаю). Поскольку после переключения на редактирование ASCII все буквы становятся легальными символами редактирования. Вообще-то, клавишу GOLD положено нажимать перед всеми командами, но, когда редактируешь в восьмеричном окне, букв там не может быть и DESS благосклонно позволяет пропустить клавишу GOLD.

В эмуляторе клавишей Gold для DESS22 оказалась пятерка на цифровой клавиатуре. Похоже, на 15ИЭ это будет клавиша между стрелочками.

Переключение Oct/ASCII у DESS22 тот же Ctrl/J (клавиша ПС на родных ДВК-шных терминалах)

- - - Добавлено - - -

form, мне ни разу не попадалось DESS'ов, грузящих систему на 100% - вероятно, это был сильно ранний вариант.

form
22.12.2016, 08:42
мне ни разу не попадалось DESS'ов, грузящих систему на 100%
А откуда это известно что не попадалось? :)
В SJ мониторе этого не увидеть. Да и в любом другом пока дело касается обычного BG job. Вот к примеру SL.SYS от Сторожевых загружает CPU на 100% во время своего "idle" в отличие от DECовских - те честно ожидают :)
Но про DESS я собственно и не утверждаю, что был такой. PUD точно такой.

AFZ
22.12.2016, 09:19
А откуда это известно что не попадалось? Под TSX-ом видно, "думающая" задача чувствуется.


SL.SYS от Сторожевых загружает CPU на 100% во время своего "idle"А пофиксить никак?

В том TSX-е, что у меня (для Э-85, я его запускал в начале 15-го под Хомером) этот SL вписан в TSKMON и ничуть не мешает.

form
22.12.2016, 09:25
Под TSX-ом видно, "думающая" задача чувствуется.
Ну под TSX и алгоритм другой, там такая задача не настолько страшна будет. Да и все .TTINR/.TTYIN там принудительно останавливают задание если только при запуске (или при установке) к ней не привязаны посимвольный ввод и отсутствие ожидания (ну или сама программа не запросит этого в явном виде).


В том TSX-е, что у меня (для Э-85, я его запускал в начале 15-го под Хомером) этот SL вписан в TSKMON и ничуть не мешает.
Там он даже не в KMON вписан, а в саму систему. Но в 6.01 он убогий (однострочный) вроде еще.

- - - Добавлено - - -

Собственно загрузку можно посмотреть в FB/ZM/ZM, запустив RTMON на отдельном терминале. Я как раз так SL и выловил.

AFZ
22.12.2016, 09:46
Ну под TSX и алгоритм другой, там такая задача не настолько страшна будет Да, не страшно. Но все равно чувствуется.


Там он даже не в KMON вписан, а в саму систему. Конкретно - в модуль TSKMON.


Но в 6.01 он убогий (однострочный) вроде еще. В оригинале - да. Но тот TSX ко мне попал после серьезного вмешательства Потёмкина и команды, в которую входил, в частности, и Сторожевых. И там количество строк SL задается параметром генерации - в оригинале SL=NO или SL=YES, а они добавили SL=n (число, количество строк, которые следует помнить, если не врет мой склероз, там стоит 15).

form
22.12.2016, 09:51
Конкретно - в модуль TSKMON.
Может быть - не смотрел, но работает и не в KMONе.

в оригинале SL=NO или SL=YES, а они добавили SL=n (число, количество строк, которые следует помнить, если не врет мой склероз, там стоит 15).
Да, видел такое там в конфиге.