С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Когда с BYTEMAN запускали СМку, наткнулись на проблему работы со скриптами и успешно обошли ее. На тот момент пришли к выводу (хотя особо не проверяли), что в момент S делается RESET из-за которого в сторону PC шлется BREAK, а USBшный адаптер от него на какое-то время задумывается. Когда вставили вначале код задержки - все заработало. Пару нопов вставляли - было мало![]()
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
Дык, давно уже. Каталог /boot. Собирается в оригинальный 4-х страничный ROM, комментарии взяты из документации.
Помнится, на БК-0010 написал дизассемблер на тамошнем Бейсике. Что бы биос декодировать. Вот чего я потом с декодированным сделал...
Но точно помню, что было дальше - соединил БК и УКНЦ - и перелил все ПЗУ-хи, до которых дотянулся. И потом с ними уже на УКНЦ, а потом на ДВК развлекался
- - - Добавлено - - -
Vslav, спасибо тебе, добрый человек![]()
Сам удивился - может с кодом ПЗУ что-то не так, но при выполнении команды S стартовый адрес сначала увеличивается на 4 и только потом на него передаётся управление.
Поэтому, если ввести в пульте такой код:
Код:000000 ?L 1000 ?D 001000 240 ?D 001002 241 ?D 001004 242 ?D 001006 243 ?D 001010 244 ?D 001012 775 ?L 1000 ?S
То выполнится он так:
Код:173252 [000344] MOV @#177560, SP ; 177560:000200 -> R6 173256 [000340] BIC #-129., SP ; 173260:177577 -> R6 :000200 173262 [000340] BEQ 173252 173264 [000340] MOV @#177562, R2 ; 177562:000015 -> R2 173270 [000340] BIC #-128., R2 ; 173272:177600 -> R2 :000015 173274 [000340] MOV @#177564, SP ; 177564:000200 -> R6 173300 [000340] BIC #-129., SP ; 173302:177577 -> R6 :000200 173304 [000340] BEQ 173274 173306 [000340] MOV R2, @#177566 ; R2 :000015 -> 177566 173312 [000340] ADD #2, R3 ; 173314:000002 -> R3 :173074 173316 [000350] MOV R3, PC ; R3 :173076 -> R7 173076 [000350] ADD R1, R2 ; R1 :051400 -> R2 :000015 173100 [000340] MOV R4, R1 ; R4 :000000 -> R1 173102 [000344] CMP #19488., R2 ; 173104:046040 -> R2 :051415 173106 [000351] BEQ 173170 173110 [000351] CMP R4, R2 ; R4 :000000 -> R2 :051415 173112 [000351] BNE 173120 173120 [000351] MOV R2, R4 ; R2 :051415 -> R4 173122 [000341] CMP #17696., R2 ; 173124:042440 -> R2 :051415 173126 [000351] BNE 173144 173144 [000351] CMP #17440., R2 ; 173146:042040 -> R2 :051415 173150 [000351] BEQ 173202 173152 [000351] CMP #21261., R2 ; 173154:051415 -> R2 :051415 173156 [000344] BNE 173164 173160 [000344] MOV #-2052., PC ; 173162:173774 -> R7 173774 [000350] RESET 173776 [000350] BNE 173652 173652 [000350] MOV #64., @#173024 ; 173654:000100 -> 173024 173660 [000340] MOV R0, R4 ; R0 :001000 -> R4 173662 [000340] BIC #-8., R4 ; 173664:177770 -> R4 :001000 173666 [000344] MOV R0, R1 ; R0 :001000 -> R1 173670 [000340] BIC R4, R1 ; R4 :000000 -> R1 :001000 173672 [000340] BEQ 173714 173674 [000340] ADD #4, R5 ; 173676:000004 -> R5 :001000 173700 [000340] BNE 173714 173714 [000340] MOV R4, R3 ; R4 :000000 -> R3 173716 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173720 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173722 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173724 [000344] MOV #-2134., PC ; 173726:173652 -> R7 173652 [000350] MOV #0, @#173024 ; 173654:000000 -> 173024 173660 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173662 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173664 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173666 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173670 [000344] ADD R3, R3 ; R3 :000000 -> R3 :000000 173672 [000344] MOV R5, PC ; R5 :001004 -> R7 001004 [000340] CLV 001006 [000340] BIC_PSW ^b0011 001010 [000340] CLZ 001012 [000340] BR 001006 001006 [000340] BIC_PSW ^b0011 001010 [000340] CLZ 001012 [000340] BR 001006 001006 [000340] BIC_PSW ^b0011 001010 [000340] CLZ 001012 [000340] BR 001006
Как такое ПЗУ может работать без заморочек - сложно представить.
Последний раз редактировалось Patron; 06.08.2017 в 17:54.
Прикольно. ПЗУ-а пытается работать так, как будто ОЗУ вообще нетИ код старта, а так же загрузки с устройств (такое впечатление), что общий - поэтому даже в команде S предполагается, что в R5 адрес некоего начального регистра устройства (а в случае S - откуда хотим стартовать) и перед переходом на собственно загрузчик (или адрес старта в S) этот адрес уводится на CSR (в предположении что он на +4 от этого начального регистра), что и даёт старт с адрес +4 от указанного в S. Это если я правильно пробежался по коду...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)