" 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
Это как раз потому, что при байтовых операциях на Q-Bus всегда выставляется слово, но если A0 == 1 - передаваемый байт содержится в старшем байте этого слова.
Если же на шине сидит настоящее байтовое устройство, которое понимает значение A0, не как смещение в слове, а как адрес байта - записать байт в байтовый регистр с нечётным адресом у такого устройства можно только обсуждаемым способом.