" p.s.: Еще там Немига и Э-85. А так же Spectrum. Словом, смесь хорька, барсука и штопора."
Раз там эмуляция Э85 есть (нормально работает?), дайте ссылку, откуда скачать?
" p.s.: Еще там Немига и Э-85. А так же Spectrum. Словом, смесь хорька, барсука и штопора."
Раз там эмуляция Э85 есть (нормально работает?), дайте ссылку, откуда скачать?
Занятно. Вот кусок трассы:
Не понял пока намеренно так сделано или результат ошибки.Код:002214 MOV #100066, R0 002220 BR 002160 002160 MOV (R0)+, R3 002162 BEQ 002264 002264 MOV #100076, R0 002270 MOV (R0)+, R3 002272 BNE 002164 002164 BMI 002300 002166 CALL (R3) ; Здесь реально происходит переход на нечётный адрес 010233 010232 CLR (R5)
Инициализация портов при старте машины:
Дальше пока уходим в вечный цикл с опросом портов 161060 и 161062 -- разбираюсь почему так.Код:177612 -> (161036) PPIP -- код 0212 для инициализации параллельного порта 177740 -> (161030) PPIA 000015 -> (161034) PPIC -- вкл часы/календарь 000126 -> (161016) SNDСSR 000015 -> (161012) SNDC1R 000000 -> (161062) DLCSR 000000 -> (161062) DLCSR 000000 -> (161062) DLCSR 000100 -> (161062) DLCSR 177716 -> (161062) DLCSR 000005 -> (161062) DLCSR 000014 -> (161066) KBDBUF 000050 -> (161066) KBDBUF 177723 -> (161066) KBDBUF 177740 -> (161066) KBDBUF 177740 -> (161066) KBDBUF 000022 -> (161000) ???
Разобрался почему выходили не туда -- при инициализации портов была попытка занести данные в несуществующий порт и это приводило к каким-то процедурам обработки такой ошибки.
Всего выявилось три неописанных в спеках порта -- 161000, 161002 и 161412.
Полностью начальная инициализация портов выглядит так:
Код:177612 -> (161036) PPIP -- код 0212 для инициализации параллельного порта 177740 -> (161030) PPIA 000015 -> (161034) PPIC -- вкл часы/календарь 000126 -> (161016) SNDСSR 000015 -> (161012) SNDC1R 000000 -> (161062) DLCSR 000000 -> (161062) DLCSR 000000 -> (161062) DLCSR 000100 -> (161062) DLCSR 177716 -> (161062) DLCSR 000005 -> (161062) DLCSR 000014 -> (161066) KBDBUF 000050 -> (161066) KBDBUF 177723 -> (161066) KBDBUF 177740 -> (161066) KBDBUF 177740 -> (161066) KBDBUF 000022 -> (161000) ??? неописанный порт 000000 -> (161002) ??? неописанный порт 177777 -> (161002) ??? неописанный порт 000064 -> (161026) SNLСSR 000164 -> (161026) SNLСSR 177664 -> (161026) SNLСSR 000014 -> (161034) PPIC 000052 -> (161412) ??? неописанный порт 000016 -> (161412) ??? неописанный порт 000015 -> (161034) PPIC 000000 -> (161214) HR6 000040 -> (161210) HR4 000000 -> (161204) HR2 000000 -> (161206) HR3
Не, ну как это не описан??? Это контроллер прерываний.
А второй неописанный порт 161412 и 161413 (да, да, обрати внимание, идет СЛОВНАЯ запись по нечетному адресу) - это скорее всего часы-календарь 512ВИ1, т.к. перед данной записью и после выключаются и включаются часы.SNDCSR = 161000
PICMR = 161002
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Это как раз потому, что при байтовых операциях на Q-Bus всегда выставляется слово, но если A0 == 1 - передаваемый байт содержится в старшем байте этого слова.
Если же на шине сидит настоящее байтовое устройство, которое понимает значение A0, не как смещение в слове, а как адрес байта - записать байт в байтовый регистр с нечётным адресом у такого устройства можно только обсуждаемым способом.
Последний раз редактировалось Patron; 03.01.2015 в 22:22.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)