PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
http://archive.pdp-11.org.ru/ukdwk_a...t/Other/40in1/
Подходит и для эмулятора и для живой машинки )))
ага, только нету на SY: ни PIP ни DUP ни DIR ничего вообще нету )
Чёрный экран, приглашение ком.строки и курсор мигает. ) Такое прерывание не позволит ничего сделать кроме как
перезагрузить дискету (ну со сторонней дискеты мучать её никто не запретит никому и никогда).
- - - Добавлено - - -
Я помню ты уже "хвастался", я про эти телеки ничего не знаю (про себя прозвал их "шляндыч") )))
form, это ты можешь ) Только ты ещё должен сориентироваться и понять где и что прервать.
А вот у нас юзер который без инструкции UKNCBTL запустить не может ))) Надо же оберегать
от него пакет программ. К тому же - меню для игр - это только 1 вариант использования.
А если полновесную граф. оболочку под КЦГД накатать поверх RT-11 ?
Вот там и пригодятся
и прочие всякие вещи в консольном окне что бы мелькали )))
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Вот для начала драйвер. Не причесывал, для простоты пока работает только в 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 .
В драйвере никаких хитростей, никаких перехватов векторов. Все документированное-стандартное![]()
Последний раз редактировалось form; 13.12.2016 в 06:24.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
а где же то самое кольцо??? )))
надо что бы (если нету) он тупо писал - нету!!! нету нету нету нету нету нету нету нету - бесконечно )))
Обычная работа в системе - не надо! )))
- - - Добавлено - - -
он вообще выпадать в систему не должен! он наоборот от этого должен оберегать (от выпадания в систему)
- - - Добавлено - - -
но этот вариант я изучу, спасибо.
- - - Добавлено - - -
забрал из каки вместе с исходником
- - - Добавлено - - -
обращение к SY между сообщениями само собой происходит )
Ну так просто убрать проверку файла и будет бесконечно писать
Так даже проще - сразу куча кода высвободится и сохранять регистры не нужно...
- - - Добавлено - - -
Или можно вставить код зачистки нижней памяти с чистым остановом (на ВМ3 правда он по дороге трапнется, но большую часть зачистит, ну а на УКНЦ вчистую отработает)![]()
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)