С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
SAV раличает только M11 и N11, отдельно проверяет наличие MOVR.
В общем случае проверка такая (MFPT=5, MR&360 = 20)Иными словами, если запись в бит W не сбрасывает его, то это M11Код:20$: MOV #KISDR7+1,R0 ;;;POINT TO KERNEL PDR7 MOVB (R0),(R0) ;;;WRITE THE HIGH BYTE OF THE PDR BITB #100,-(R0) ;;;DOES IT SHOW WRITTEN? BNE 60$ ;;; IF NE, YES, WE HAVE AN M11
Далее проверяется MED:Если нету, это ни M11 ни N11. Если есть - N11. Далее для M11/N11 проверяется MOVR и TOY.Код:.WORD 076600 ;;; TRY AN MED INSTRUCTION .WORD 156227 ;;; CHECK FOR N11 PROCESSOR
В ACF проверка более сложная, сейчас буду ковырять как там делается.
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
А прошивка сначала считает, что это M11, а вот после MED6X (076600 156227) смотрятся биты 8 и 9 регистра R0. Если они равны нулю, то это N11. Кстати по этим битам определяется версия микрокода до запятой. И при нуле она может быть 5 или 6, шестая версия по идее должна иметь FPU.
Прошивке нужно многое знать, а RSXу в принципе интересна модель процессора (она возвращается директивой GTSK$, для M11 будет 95, для N11 - 97) и наличие команды MOVR (если есть выставляется фаг что есть и подпрограмма блочной пересылки патчится на использование команды).
А TOY проверяется так: если есть 177522 на шине, значит ментековского варианта быть не может, в противном случае чистится 177520 чтобы гарантировать маппинг EPROM, а не EEPROM и делается попытка прочитать TOY. К сожалению не на чем проверить важно ли последнее условие или его сделали на всякий случай чтобы не попортить EEPROM (хотя, как писал выше, записи в окно не выполняется даже при записи в TOY).
- - - Добавлено - - -
Да, при том прошивка просто считает, что она работает либо на M11 либо на N11. Я вон ее запустил на 11/83 - не обиделась - M11 говорит![]()
Последний раз редактировалось form; 15.09.2017 в 22:29.
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
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
Ну это как бы понятно: MED есть только при эмуляции DCJ11, но сначала видимо он эмуировался без особых наворотов.
- - - Добавлено - - -
Пока собиралмя писать тест дозрела мысль: запись в бит W непричем (хотя в прошивке при инициализации он в него пишет зачем-то). RSX проверяет просто запись в PDR, не трогая W бита в этот момент, и смотрит сбросился ли W при этом.
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
По поводу теста:
надо проверить MED6X 156227 какие значения R0 и R1 получаются сначала при R0=0 и R1=0, а затем при R0=177777 и R1=177777;
надо проверить MED6X 156226 какие значения R0 и R1 получаются при R0=177777 и R1=0.
Новый тест в каталоге. Проверяет поведение бита W в PDR.
На 11/83 выглядит так:Запись как в PAR так и в PDR очищает W.Код:.RU PDRW MOVB @#KISDR7,@#KISDR7 ;KISDR7=077406 MOV @#PSW,@#PSW ;KISDR7=077506 MOVB @#KISDR7,@#KISDR7 ;KISDR7=077406 MOV @#PSW,@#PSW ;KISDR7=077506 MOV @#KISAR7,@#KISAR7 ;KISDR7=077406 BIS #100,@#KISDR7 ;KISDR7=077406 BIC #100,@#KISDR7 ;KISDR7=077406 .
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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)