в первом, я так понял, вы переделали прерывания под пентагон? Бордер на втором не дрожал?
Вид для печати
Вопрос - как вообще возможно, что Ленинград-1 может работать с отрезанным WAIT ("доработка" В.М.Г.)?
По мне так это неимоверный хак - я не могу физически представить как видеоконтроллер и процессор могут не мешая друг другу юзать одну и ту же память РУ5 на частоте 3.5 МГц (285 нс)
Обычный Ленинград с РУ5 из мусорного бачка без WAIT скорее всего работать не будет. Если поставить нормальную память и немного изменить подключение CLК, то WAIT не нужен. У Зонова в зеленом Скорпионе на 3,5 МГц WAIT уже не используется.
Спасибо за быстрый ответ! А изменить подключение CLK - это его задержка, как в оригинальном спектруме (т.е. тот же WAIT, но другим способом) либо укорачивание отдельных клоков без изменения их периодичности/частоты?
Shaos, Доработка заключается в том,
что на 24-й вывод процессора вместо -WAIT подается +5В, а на 6-й вывод подается инвертированная частота - H0.
из сборника VMG 5
у меня работал ленинград-1 без WAIT`a (вместо РУ5 ставил SIMM)
Композит на РУ5 у меня без WAITа не заработал.
Вот такой рецепт выглядит более научно обоснованным:
Код:КАК СДЕЛАТЬ ЛЕИГРАДОПОДОБУЮ
МАШИУ СОВМЕСТИМОЙ С ПЕТАГООМ.
ДИАГРАММА РАБОТЫ
КОМПЬЮТЕРА ТИПА 'ЖЕЛТЫЙ СКОРПИО'.
┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
14 ┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘
__ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐
ТИ ┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └
___──┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌──┐
RAS └───┘ └───┘ └───┘ └───┘ └───┘
┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌──┐
H0 └───┘ └───┘ └───┘ └───┘ └───┘
┐ ┌───────┐ ┌───────┐
H1 └───────┘ └───────┘ └───────┘
___────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌
CAS └───┘ └───┘ └───┘ └───┘ └───┘
_____──┐ ┌───────────┐ ┌───────────┐ ┌
WRBUFF └───┘ └───┘ └───┘
ПРИМЕЧАИЯ:
Процессор тактируется сигналом /RAS.
Поэтому /CLK процессора идентичен /RAS.
______ ┌──
WRBUFF ──┘ - ЗАПИСЬ В БУФЕР ДАЫХ
РАБОТА С ПАМЯТЬЮ
H1=0 - РАБОТАЕТ ПРОЦЕССОР
H1=1 - РАБОТАЕТ ВИДЕОКОТРОЛЛЕР
H2 - ЧТЕИЕ ИЗОБРАЖЕИЯ/АТРИБУТОВ
H3...V7 - АДРЕС В ЭКРАЕ
/RAS выбор адреса в микросхемах памяти
/CAS чтение из памяти
Вся работа с памятью в компьютере типа
'ЖЕЛТЫЙ СКОРПИО' сводится к 3-м циклам:
чтение кода операции без циклов ожидания,
чтение кода операции с 1-м циклом ожида-
ния, чтение или запись данных без циклов
ожидания. Сигнал /WAIT на шине процессора
присутствует только при чтении кода опера-
ции с 1-м циклом ожидания. Циклы чте-
ния/записи данных у процессора длинее на 1
такт, чем чтение кода операции. Чтение
данных из шины в процессор всегда происхо-
дит при переходе /MREQ из 0 в 1, при запи-
си данные и адрес на шине готовы за пол-
такта до перехода /MREQ из 1 в 0. Адрес
при чтении тоже готов за полтакта до пере-
хода /MREQ из 1 в 0.
РАБОТА ПРОЦЕССОРА Z80 С ПАМЯТЬЮ
ИЗВЛЕЧЕИЕ КОДА ОПЕРАЦИИ
БЕЗ ЦИКЛОВ ОЖИДАИЯ
4 ТАКТА
├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
___ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌─
CLK─┘ └──┘ └──┘ └──┘ └──┘
.
____───┐ . ┌──┐ ┌───
MREQ └────────┘ └─────┘
.
__ ───┐ . ┌────────────
RD └────────┘
.
____ ─ ─ ─ ─┌─┐ ─ ─ ─ ─ ─ ─ ─
WAIT─ ─ ─ ─ ┘ └─ ─ ─ ─ ─ ─ ─ ─
__ ─┐ ┌────────────
M1 └───────────┘
____────────────┐ ┌
RFSH └───────────┘
ИЗВЛЕЧЕИЕ КОДА ОПЕРАЦИИ
С 1-М ЦИКЛОМ ОЖИДАИЯ
4 ТАКТА + 1 ТАКТ ОЖИДАИЯ
├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
___ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌─
CLK─┘ └──┘ └──┘ └──┘ └──┘ └──┘
. .
____───┐ . . ┌──┐ ┌───
MREQ └──────────────┘ └─────┘
. .
__ ───┐ . . ┌────────────
RD └──────────────┘
. .
____ ─ ─ ─ ─┐ ┌─ ─┌─┐ ─ ─ ─ ─ ─
WAIT─ ─ ─ ─ └─┘ ─ ┘ └─ ─ ─ ─ ─ ─
__ ─┐ ┌────────────
M1 └─────────────────┘
____──────────────────┐ ┌
RFSH └───────────┘
ЧТЕИЕ/ЗАПИСЬ ДАЫХ ПРОЦЕССОРОМ
БЕЗ ЦИКЛОВ ОЖИДАИЯ
3 ТАКТА
├ ─ ─ ─ ─ ─ ─ ─ ─ ┤
___ ┌──┐ ┌──┐ ┌──┐ ┌─
CLK─┘ └──┘ └──┘ └──┘
.
____───┐ . ┌────
MREQ └───────────┘
.
____ ─ ─ ─ ─┌─┐ ─ ─ ─ ─ ─
WAIT─ ─ ─ ─ ┘ └─ ─ ─ ─ ─ ─
__ ───┐ ┌─────
RD └───────────┘
__ ─────────┐ ┌─────
WR └─────┘
____
Сигнал WAIT опрашивается процессором ров-
но через 1 такт после того как сигнал
/MREQ упадет в ноль. /MREQ переходит из 1
в 0 при необходимости операций с памятью и
это всегда происходит при переходе из 1 в
0 на /CLK входе процессора. Если при опро-
се сигнала /WAIT он находиться в 1 то все
циклы чтение/записи продлеваются на 1
такт, после чего снова опрашивается сигнал
/WAIT. Таким образом процессор может бес-
конечно ждать пока память не будет готова.
Однако из этих правил есть одно исключение
- сигнал /WAIT не опрашивается при выпол-
нении регенерации. Т.е. пока /RFSH будет в
0 процессор на /WAIT не реагирует.
Как происходит извлечение кода операции.
Возможны 2 варианта - с задержкой по /WA-
IT и без задержки. Диаграмма варианта с
задержкой приведена ниже. Цикл без за-
держки возможен только при переходе /MREQ
из 1 в 0 при сигнале H1 равном 0:
КАК ЭТО ЕСТЬ БЕЗ ЦИКЛА ОЖИДАИЯ:
___ ┌───┐ ┌───┐ ┌───┐ ┌───┐
RAS─┘ └───┘ └───┘ └───┘ └
.
───┐ ┌───┐ . ┌───┐ ┌───┐
H0 └───┘ └───┘ └───┘ └─
.
───┐ ┌───────┐ ┌──
H1 └───────┘ . └───────┘
.
___ ┌───┐ ┌───┐ ┌───┐ ┌─
CAS───┘ └───┘ . └───┘ └───┘
.
____────┐ . ┌───
MREQ └───────────────────┘
.
____────┐ ┌─────────────────────
WAIT └─┘
______────┐ ┌─────────────────
WRBUFF └───┘
/WAIT к моменту его опроса уже был деак-
тивизирован т.к. уже произошло чтение из
памяти и данные были записаны в буфер.
Если посмотреть на диаграмму работы
компьютера, то можно увидеть, что цикл
чтения кода операции с 1-м тактом ожидания
возможен только в единственном случае -
когда сигнал /MREQ перешел из 1 в 0 и зна-
чит сигнал /CLK перешел из 1 в 0 при сиг-
нале H1 равном 1. Поскольку /CLK это есть
ни что иное как /RAS можно нарисовать та-
кую картинку:
КАК ЭТО ЕСТЬ С ЦИКЛОМ ОЖИДАИЯ:
___ ┌───┐ ┌───┐ ┌───┐ ┌───┐
RAS─┘ └───┘ └───┘ └───┘ └
.
───┐ ┌───┐ . ┌───┐ ┌───┐
H0 └───┘ └───┘ └───┘ └─
.
┌───────┐ . ┌───────┐
H1 ───┘ └───────┘ └─
.
___ ┌───┐ ┌───┐ ┌───┐ ┌─
CAS───┘ └───┘ . └───┘ └───┘
.
____────┐ . ┌───
MREQ └───────────────────┘
.
____────┐ . ┌────────────
WAIT └─────────┘
______────────────┐ ┌─────────
WRBUFF └───┘
ЧТО БЫЛО БЫ БЕЗ ЦИКЛА ОЖИДАИЯ,
КОГДА О БЫЛ ЕОБХОДИМ :
___ ┌───┐ ┌───┐ ┌───┐ ┌───┐
RAS─┘ └───┘ └───┘ └───┘ └
.
───┐ ┌───┐ . ┌───┐ ┌───┐
H0 └───┘ └───┘ └───┘ └─
.
┌───────┐ . ┌───────┐
H1 ───┘ └───────┘ └─
.
___ ┌───┐ ┌───┐ ┌───┐ ┌─
CAS───┘ └───┘ . └───┘ └───┘
.
____────┐ . ┌──────────
MREQ └───────────┘
. .
____───────────────────────────
WAIT .
.
______────────────┐ . ┌─────────
WRBUFF └───┘
Тут очень хорошо видно, что процессор
закончил чтение раньше, чем данные были
записаны в буфер. Запись в буфер происхо-
дит при переходе сигнала /WRBUF из 0 в 1
при применении буфера на микросхеме ИР23
или все то время пока /WRBUF активен при
применении ИР22. Стоит обратить внимание,
что при применении ИР22 используется неин-
версный сигнал WRBUF.
Возникает вопрос - как сделать, чтобы
когда процессор заканчивал чтение данные
уже были в буфере. Совершенно ясно, что
для этого можно растянуть по времени чте-
ние и/или записать данные в буфер раньше.
Решение оказывается очень простым - па-
мять имеет обычно достаточный запас
быстродействия, поэтому данные в буфер
можно записывать раньше и процессор тоже
иногда может работать с более короткими
импульсами на входе /CLK, поэтому в нужный
момент можно увеличить один полупериод
тактовой частоты (чтобы процессор подождал
готовности буфера и памяти) и уменьшит
другой полупериод. Если в компьютере в ка-
честве буфера исползуется ИР22, то ничего
делать с ней не надо - данные в ней ока-
жуться сразу как будут получены из памяти.
Если стоит ИР23, то не повезло и придется
немного ускорить запись в буфер.
В КАЧЕСТВЕ ДОПОЛИТЕЛЬОЙ МИКРОСХЕМЫ
ИСПОЛЬЗУЕТСЯ 155,555,1533ЛА3
__
ТИ >──────────┐ ┌──┐
┌──┐ └───┤& │
______ ┌─┤& │ │ o────> на ИР23
WRBUFF>──o │ o─────┤ │ вместо /WRBUFF
└─┤ │ └──┘
└──┘
Вторая часть - изменение схемы тактирова-
ния процессора. Меняется вне зависимости
от используемого буфера.
o +5V
┌┴┐
___ ┌──┐ ┌──┐ │/│680
RAS >─────┤& │ ┌─┤& │ └┬┘
______ │ o───o │ o──o──> /CLK
WRBUFF>─────┤ │ └─┤ │ на процессор
└──┘ └──┘
Резистор на 680 ом при использовании не-
которых процессоров может не понадобиться
или даже может его придется убрать.
После выполнения вышеуказанных доработок
сигнал /WAIT можно через резистор в 680 ом
подать на +5V. Вот теперь диаграмка того,
что получилось.
КАК ЭТО СТАЛО БЕЗ ЦИКЛА ОЖИДАИЯ:
___ ┌───┐ ┌───┐ ┌───┐ ┌───┐
RAS─┘ └───┘ └───┘ └───┘ └
___ ┌───┐ ┌───┐ ┌─┐ ┌───┐
CLK─┘ └───┘ └─────┘ └───┘ └
.
───┐ ┌───┐ . ┌───┐ ┌───┐
H0 └───┘ └───┘ └───┘ └─
.
┌───────┐ . ┌───────┐
H1 ───┘ └───────┘ └─
.
___ ┌───┐ ┌───┐ ┌───┐ ┌─
CAS───┘ └───┘ . └───┘ └───┘
.
____────┐ . ┌──────────
MREQ └─────────────┘
. .
____───────────────────────────
WAIT .
.
______────────────┐ ┌─────────
WRBUFF └─┘
/WRBUFF стал короче, а /CLK удлинился в
одном месте и укоротился в другом. Тут по-
казано на примере доработки для ИР23, для
ИР22 /WRBUFF не меняется, а саму ИР22 идет
вообще инверсный.
Kirill Frolov