Тогда я уже торможу. Все пора домой.Сообщение от spensor
Нашел в ПрофПЗУ процедуру теста - разберу до конца потом кину.
Тогда я уже торможу. Все пора домой.Сообщение от spensor
Нашел в ПрофПЗУ процедуру теста - разберу до конца потом кину.
Mick, ты не прав насчёт порта #D9BE. учитывай, что при outi/outd сначала уменьшается b, а потом bc используется в качестве адреса порта
Согласно datasheet на Z80Сообщение от SMT
OUTD (BC) <- (HL)
B = B-1
HL = HL -1
OUTI (BC) <- (HL)
B = B-1
HL = HL +1
А теперь смотрим пример
LAB_1C98: push hl
1c99 0ebe ld c,0beh
1c9b 11f9d9 ld de,0d9f9h ;старшие байты портов
1c9e af xor a
LAB_1C9F: ld b,d
1ca0 23 inc hl
1ca1 edab outd ;запись в порт 0d9beh - сигнал WR_HI
1ca3 43 ld b,e
1ca4 eda3 outi ;запись в порт 0f9beh HDD
1ca6 23 inc hl
1ca7 3d dec a ;повторяем 255 раз
1ca8 20f5 jr nz,LAB_1C9F
1caa e1 pop hl
1cab c9 ret
Ну и кто здесь не прав на счет 0d9beh
Последний раз редактировалось Mick; 13.09.2005 в 08:50.
Сообщение от SMTТак кто все-таки прав? Может STS'ом для правильности "обкатать" этот кусок?Сообщение от Mick
даташиты врут. это уже давно известный факт, что в командах outi/otir и outd/otdr сначала декрементируется B, а потом BC выставляется на ША в качестве номера порта.
Что все? Z80,Z180? Да фирма Zilog оказывается большой вруньей.Сообщение от jtn
А я верил .
Я хочу услышать тоже, мнение професионального программера. Есть такие?
Последний раз редактировалось Mick; 13.09.2005 в 09:50.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну возмите, да STS'ом протрассируйте, то что оно правильно сработает сомнений не вызывет! Думаю, что профессионализм Stalker'а сомнений не вызывет?Сообщение от Mick
Продолжим разбираться на счет OUTD
Вот выдержка из статьи Ивана Рощина о влиянии флага переноса в процедуре OUTD
"При написании одной программы мне понадобилось наиболее оптимально (по объёму) реализовать запись данных в первые 11 регистров музыкального сопроцессора из области памяти #8000—#800A. Сначала я сделал это так:
LD HL,#800A
M1 LD BC,#FFFD
OUT (C),L
LD B,#BF
OUTD
BIT 7,L
JR Z,M1 "
Теперь обясните мне, в свете ваших утверждений каким образом он записывает в порт #BF.
И еще приведите мне документально всеми известный факт - иначе не поверю в вранье фирмы Zilog.
Alone Coder проверял на Z80 и КР1858ВМ1. так же он сообщал, что некий Т34ВМ1 реализует поведение outd/outi по даташитам (то есть неправильное)
Mick, порты #BFFD и #BEFD - одно и то же, A8 не участвует в дешифрации. не хочешь верить - проверь на живом спектруме, что ld bc,#80FD/OUTI нормально пишет в #7FFD
По твоей просьбе, spensor, вот еще пример из ПрофПЗУ процедуры работы с NRAM (смещение все тоже - 7 страница 1с000h)
Попытлся прокомментировать, что -то сам запутался. Короче там все как на схеме ни чего лишнего.
Еще нашел инициализацию контроллера прерываний. Если надо кину.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)