Доброго времени дорогие коллеги !
Сегодня решил разобраться в ассемблере PDP-11, в целом, это не главная цель, ибо принципы работы ассемблера я в целом понимаю, и что то писал под 8080. С букварем в целом сам принцип кода ясен, и образование комманд тоже.
Не понятно другое. ТАк как в целом, я хочу поработать с графикой УКНЦ, сразу решил изучить как работает видеоадаптер, и полез вот сюда:
Ресурсы УКНЦ/Глава 1
... это статья, которая в целом должна привести меня к пониманию принципов формирования изображения на дисплее УКНЦ. Но... То ли автор статьи - изрядный троль, то ли человек оставил кучу ошибок, с целью сподвигнуть читающих разбираться в коде глубже, то ли опечатки при наборе... Допускаю даже вариант, при котором один из моих УКНЦ что то не так делает, позже буду пробовать на другой машине... В общем, доподлинно наверняка установить причину не реально, но...
Сразу же в примере 1 я наткрулся на некоторое несоответствие поведения машины описанию в статье. Причем, автор время от времени отпускает "веселые" шутки, но совсем не отвечает на возникающие вопросы, не обьясняет как в целом должно быть, ощущение такое, как будто он описывает для тех, кто ну может на уровне чуть ниже чем он, и очень долго сидел за УКНЦ как минимум...
Ну да ладно, в целом, пример 1 я понял, в частности так, что из монитора ПП можно получить доступ к памяти ЦП, а если поправить обеспечение, то так же и из отладчика ЦП можно попасть в память ПП а главное, можно получить доступ к памяти ЦП, которая пользователю не доступна в режиме USER - а доступна в режиме HALT.
Далее автор описывает регистровый доступ к памяти видеоадаптера, и после примера 2, который тоже не заработал, после ввода первого адреса и данных - второй адресс не изменил содержание, регистра, а после ввода данных в регистр я вообще получил двойное зависание. ...
Тем не менее у меня еще осталась некоторая вера в то что автор реально заинтересован в том, чтобы я понял как это работает, и я приступил к третьему примеру...
Ну и тут, введя код основной программы, и код программы копирования в отладчике ПП (в память ПП) я с удивлением заметил что начиная с запуска программы копирования - я получаю просто черный экран, и компьютер не отвечает не на что, только на резет.
Я сделал повторно все описанное еще раз. Покопался в справочнике по ассемблеру, предположил, что смещение в последней комманде программы копирования не 3 а 2, то есть было:
Скрытый текст
40040: 012702 MOV #60000, R2
060000
012703 MOV #60100, R3
060100
012701 MOV #37, R1
000037
M: 012223 MOV (R2)+, (R3)+
077103 SOB M, R1[свернуть]
стало:
Скрытый текст
40040: 012702 MOV #60000, R2
060000
012703 MOV #60100, R3
060100
012701 MOV #37, R1
000037
M: 012223 MOV (R2)+, (R3)+
077102 SOB M, R1[свернуть]
И после этого опять же получил просто черный экран без признаков жизни..
После этого я провел эксперимент в отладчике ЦП, Действительно код заработал, и скопировал подпрограмму с адреса 60000 по адресу 60100 - именно в исправленном варианте. Но почему это не заработало в отладчике ПП - я понять не могу.
Даже набрав подпрограмму вручную с адреса 60100 и поменяв местами то что отмечено звездочками - в общем, проделав все что описано - я не получил никакого копирования.
В общем, прошу помочь разобраться в этом всем, ну или на крайний случай, показать где можно почитать более работоспособные документы, благодаря которым можно таки изучить как работает ассемблер и видеоадаптер УКНЦ и написать что то красивое для этой машины.
Заранее благодарен !!!
- - - Добавлено - - -
Хотелось бы еще добавить, что конкретная машина прекрасно работает со всем программным обеспечением, которое есть у меня, проходит все тесты и проблем с ней не возинкало и не возникает вообще, то есть вариант что конкретная машина что то не так выполняет - он по большей части абстрактный....