caro, у Вас есть схема "Магик-05" ?
Вид для печати
caro, у Вас есть схема "Магик-05" ?
Поймал, спасибо.
Саго - у магика кварц точно на 14Мhz или кратный какойто?
Что до ниже/выше - это зависит от точного количества машинных циклов(не путать к количеством тактов генератора) от момента прихода INT а как мы знаем - они могут варьироваться в зависимости от того как устроен комп - они могут тормозится и wait ом и clk ой.
P.S. был какойто тест который показывал количество не то циклов не то команд между прерываниями - вот его надо запустить на этих 3х тачках и измерить <del>длину писюна</del> скорость работы ленинграда с и без ваит и магика - буден ясен резалт и попросить запустить тест на спектрум+.
вот вам две tap версии первого арканоида : ранняя (c опросом порта #FF ) и поздняя (без него).
проверяйте на своих самодельных реалах.
Должно быть 20 мс
Должно быть 64 мксЦитата:
SS
длина - 11 µs
период - 80 µs
Должно бытьЦитата:
INT
длина - 11 µs
9.14 мкс для кварца 14 МГц
Но главное, чтобы было 224 такта Z80 в строке.
Телевизор то может и стерпит несоответствие, а вот программы - не все будут работать правильно.
По телевизионному стандарту период строчной развертки 64 мкс (частота 1/64мкс=15,625 кГц), а период кадровой 20 мс (частота 1/20 мс = 50 Гц).
У вашего Ленинграда частота вроде правильная (http://www.zx.pk.ru/showpost.php?p=416791&postcount=118).
Должно быть 32 такта Z80 = 32/3.5 МГц = 9.14 мкс.Цитата:
На сколько я знаю должно быть 8 мкс не зависимо не от чего.
Это заложено в вашей доработке на триггере ТМ2 и в теме про Harlequin об этом написано (http://www.zxdesign.info/interrupts.shtml ):
Цитата:
A Z80 interrupt must not be held active for longer than is necessary as this may lead to the Z80 responding to it multiple times. It is documented somewhere that the ZX Spectrum holds the interrupt active for 32 T-states, which is long enough for all instructions to have time to respond to it, but is still long enough for it to be detected more than once.
The Z80 provides a mechanism for indicating acknowledgement of an interrupt, and I propose to use that to clear the interrupt so that we don't hold it active for longer than required, removing the chance of multiple detection. Sinclair probably chose to implement a 32 T-state interrupt period to avoid having to dedicate a ULA pin to the interrupt acknowledge.
Да
Да
http://s56.radikal.ru/i152/1109/c5/3f5f265c6f9ft.jpg
---------- Post added at 18:37 ---------- Previous post was at 17:28 ----------
Блин, еще бы не мешало иногда калибровку осцила проводить :)
Сейчас откалибровал, все встало на свои места:
период строчной развертки 64 мкс, а период кадровой 20 мс.
---------- Post added at 20:27 ---------- Previous post was at 18:37 ----------
А в чем заключается работа порта FF в первой версии ?
Как это можно визуально определить ?
Просто я загрузил оба, но разницы не увидел.
Единственно - первая версия даже не загружается без RC цепочки соединяющей магнитофонный вход и выход.
Думал сперва плохо в WAV сконвертил, но потом припаял RC цепочку и игра запустилась.
---------- Post added at 21:25 ---------- Previous post was at 20:27 ----------
zst, можете нарисовать как в Ленинграде-1 идут сигналы /RAS, /CAS, H0 по отношению друг к другу ?
Типа как тут разрисовано.
Вот черновик от руки:
http://s60.radikal.ru/i167/1109/af/175fc73ceff3t.jpg
А вот аналогично по вашей ссылке (http://zx.pk.ru/showpost.php?p=415687&postcount=59)
http://i071.radikal.ru/1109/c5/05965942fdfet.jpg
На верхней диаграмме и на желтом скорпионе - амплитуда /RAS, /CAS и H0 одинакова.
/CAS - это фактически инверсный H0.
Измеряю на своем Ленинграде-1 - сигнал /CAS в два раза по амплитуде длиннее чем H0 и /RAS.
/RAS
http://s40.radikal.ru/i090/1109/38/b6757546e572t.jpg
/CAS
http://s50.radikal.ru/i127/1109/c5/7c4c8aafc0cct.jpg
Я все это к чему.
При переделке в без вайтовую схему, надо отрезать родной /CAS и вместо него, также как и вместо /CLK подать инверсный H0
Что скажете ?
В Ленинграде во время бордера (при /BORDER=0) /CAS = /WRBUF.
В принципе, можно сделать, чтобы во время бордера тоже был /CAS. То есть подать /H0.
Вместо /RAS на CLK Z80 надо подать сигнал с выхода элемента 2-И, на который подать сигналы /RAS и /WRBUF.
Тогда появятся лишние элементы, которые можно использовать в доработках:
Цифровой INT: освободится D1 (12-13), а также С2, R3 и диод D1.
Убираем WAIT: освободится D1 (8-9) - можно использовать для нового /CAS и освободится D9 (1-6) - можно использовать для цифрового INT.
Упрощаем /CAS: освободится D13 (11-13) - можно использовать для нового CLK Z80.
После того как отрезал wait заработали все тесты - ulatest3, btime и stime
Вот ulatest3, это я как понимаю работа FF
http://i003.radikal.ru/1109/6f/41f45b46679et.jpg
Что выдает он у Harlequin, можно глянуть тут.
На на CLK Z80 что подается ?
Некоторые столбики совпадают. Значит у нас порт #FF сделан не совсем так как в оригинале. Но уже хорошо.Цитата:
То есть, просто /H0, как у меня ? А почему раньше тоже самое не работало ? (http://www.zx.pk.ru/showpost.php?p=415623&postcount=56)
А фиг его знает :)
После того разве что второй резюк на кварц поставил, больше вроде ничего не изменял. Ну и вместо кондера на строчную, поставил тм2. Может изза этого резюка, т.к. сигнал стал более ровным.
http://www.zxdesign.info/images/scre...oContMatch.jpg
У нас совпадает только один столбик, 4 слева.
И судя по адресу 14462 задержка на тм2 не нужна, т.к. там уже 5F, а у нас еще 5E.
И может ну ее нафиг эту ир23, а поставить АП5 ?
Правда для доработки она не очень удобная :(
А в KAY-1024 и ZXM-PHOENIX вместо двух ИР16 поставили одну ИР10.
---------- Post added at 00:21 ---------- Previous post was at 00:09 ----------
У нас освободилось несколько инверторов. Нельзя ли сигнал /BK сформировать не на триггере D8, а на младшем разряде счетчика D7?
Тогда освободится еще один триггер ТМ2:
Вместо с 8-D8 на 1-D7 подать сигнал с выхода 8-D12.
Вместо с 8-D8 на 10-D13 подать сигнал с 3-D7.
Вместо с 9-D8 сигнал /BK подать с 3-D7 через инвертор.
Вместо с 11-D7 сигнал FLASH брать с 12-D7.
Если на CLK Z80 подать /H0, то инвертор D34 (3-4) тоже освобождается.
---------- Post added at 00:42 ---------- Previous post was at 00:40 ----------
А на счетчики D5-D6 не потребуется ставить еще один триггер, чтобы строк было четко 312 ? На некоторых схемах ставят конденсатор 1 nF на 5 вход D5.
Есть ли программа, чтобы убедиться, сколько строк/тактов в кадре ?
Еще бы не мешало отцентровать экран(сдвинуть вправо).
http://www.zxdesign.info/images/hvidtime.png
Вроде это проверить можно программами btime и stime.
На сколько точек ? Строчный синхроимпульc укорочен до 4.57 мкс ? В Ленинграде он 9.14 мкс.
Чтобы укоротить надо для формирования синхросмеси на 13-D11 подать не /SS, а сигнал с выхода элемента ЛЛ1. На один вход ЛЛ1 подать /SS, на другой - H5. Тогда экран возможно сдвинется вправо.
На 15-D36 подать сигнал гашения с выхода элемента ЛА3. На один вход ЛА3 подать /KS, на другой - /SS.
Получается гашение можно сделать без триггера.
В общем перепаял я порт FF в вариант без тм2, разницы никакой.
Также задержка на один символ, т.к. по адресу 14462 там должно быть уже 5F, а у нас еще 5E. В общем тм2 вообще ничего не задерживала.
Похоже действительно надо менять ир23 на ап5.
---------- Post added at 12:12 ---------- Previous post was at 11:59 ----------
После этой переделки экран встал фактически на нужное место.
---------- Post added at 14:06 ---------- Previous post was at 12:12 ----------
В общем поигрался я с FF :)
Для управления похоже надо всего два сигнала - BORDER и H3
Ну и похоже АП5 вместо ир23.
http://www.zxdesign.info/images/scre...oContMatch.jpg
Судя по этому скрину идут 4 байта данных (00 40 01 41), потом порт закрывается и идут 4 байта FF и так далее. Это и обеспечит Н3, вернее /H3. Ну и к нему намешать BORDER. Больше там ничего не нужно.
---------- Post added at 15:01 ---------- Previous post was at 14:06 ----------
Сейчас попробовал следующее:
На 1 ногу ир23 подал /H3,
а на 11 ногу ир23 подал /H1.
Вот что получилось:
http://s40.radikal.ru/i087/1109/ab/88b26ac341c5t.jpg
Как видно совпадают почти все столбцы(6 из 8), за исключением 2-х(3 и 6 слева).
В первой и последних двух строках можно не обращать внимания на символы FB, они отсекаются легко с помощью BORDER.
Как видно последовательность 40 40 01 01 совпадает с циклом чтения из памяти по такту H2.
Особенно хорошо это видно по предыдущему фото:
http://i003.radikal.ru/1109/6f/41f45b46679et.jpg
Похоже надо менять(сдвигать) цикл чтения из памяти, а порт FF на /H3 и /H1 работает правильно.
С портом атрибутов там засада - арлекинец пишет что атрибут в реале приходит за 8 тактов до начала скрина - он это както особенно учитывал. Надо почитать внимательно чего он сделал.
ПыСы - раз уж такой мгтф пошел - по итогу все равно сделаете не Ленинград а чтото другое :) может потом после всех наворотов - сделать таки совсем другую плату? Чтобы не идти опять по пройденному пути и не навешивать на плату километры мгтф. Получив при этом вроде и Ленинград но с полноценными времянками.
Схему торможения Z80 для медленной памяти (http://www.zxdesign.info/docs/waitGen-1.17.pdf)
Пока не придумал, как прикрутить к Ленинграду. Там учитывается еще обращение к портам с адресами экрана в разных комбинациях с портом #FF.
Тогда Aquaplan заработает. Эффект снега не обязателен.
В KAY-2010 много чего есть:
- Z80 на нормальной скорости и TURBO
- Звук BEEPER+YAMAHA
- Память 1 Мб микросхемами или симом
- 4 слота ZX-BUS
- Контроллер PS/2 клавиатуры без WAIT
- KEMPSTON, SINCLAIR1 и SINCLAIR2 джойстики
- Цифровой INT
- Порт #FF
- Четко 312 строк в кадре
- Нормальные синхро- и гасящие импульсы в строке.
МГТФ конечно есть, например, регистр порта #FF стоит вторым этажом и его подпаивают двумя проводами. (http://www.zx.pk.ru/showpost.php?p=339441&postcount=96) Но есть отверстия в плате, чтобы эти провода пропустить с нижней стороны. Еще есть несколько мелких доработок проводом.
Добрый день!!! Собираю помаленьку ленинград по схеме отсюда http://sblive.narod.ru/ZX-Spectrum/L...ningrad48k.htm
Вопрос такой... Есть память с организацией 512К*8(PROM), подойдет ли она мне, если старшие разряды адреса посадить на землю. Где взять прошивку Биоса, его прошивать с начального адреса в ПЗУ?
Для чего на схеме диоды D2, D3(возле D31) и D4.
Может попробовать так:
http://s06.radikal.ru/i179/1109/eb/789ef930390bt.jpg
Это 3 элемента ла3 и 1 элемент ле1 ?
и не станет, в оригинальном спектруме добавляются WAIT'ы, длительность зависит от того в какой момент времени происходит обращение к памяти, причем WAIT'ы добавляются при обращении к странице где находится видеопамять.
Можно ПЗУ на 16 кил поставить, на адрес подавать номер такта, оставшимися линиями от номера такта коммутировать шину данных ПЗУ на вывод процессора WAIT. В ПЗУ залить таблицу с задержками оригинального спека :)
например на такте 14336 идет происходит задержка на 6 тактов, на такте 14337 на 5 тактов и т.д. При обращении к портам тоже такая задержка (в ULA нет проверки что это порт, а не память).
Не подскажешь по какой схеме добавляются WAIT'ы в оригинальном Ленинград-1?
---------- Post added at 02:23 ---------- Previous post was at 02:13 ----------
за картинку как выглядит программа на оригинальном ленинграде-1 без модов - огромное спасибо! :v2_dizzy_vodka3: