Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Эмуляторы отечественных компьютеров (http://zx-pk.ru/forumdisplay.php?f=61)
-   -   Пожелания и планы по эмулятору Башкирия-2М (http://zx-pk.ru/showthread.php?t=8373)

esl 8th April 2010 19:03

Quote:

Originally Posted by b2m (Post 273259)
Нет, это учитывается: CALL - 17, RST - 11


А я думал, что я просто не успеваю сделать то, что надо. А как должно быть по-нормальному?

в моем - работает

там курсором водиш
пробел+курсор - воворачивать зеркала

esl 9th April 2010 00:18

кстате о растактовке корвета
из документации

частота кадровой похоже
49.8166746373346

20мгц/16=1.25мгц
1.25мгц/164=7.62кгц
7.62кгц/153=49.8166746373346

~hbl = 1(64T=51.2мкс)0(18T=14.1мкс)
~vbl = 0(25T)1(128T)

и еще цитата

"при обращении МП к УВВ формируется один такт ожидания"
УВВ это все бисы

и еще похоже (но не уверен) что при форимровании CALL от контроллера прерываний на каждый байт добавляем по такту ожидания ....
может это что-то объяснит ?

b2m 9th April 2010 13:26

Quote:

Originally Posted by esl (Post 273360)
кстате о растактовке корвета
из документации

частота кадровой похоже
49.8166746373346

20мгц/16=1.25мгц
1.25мгц/164=7.62кгц
7.62кгц/153=49.8166746373346

~hbl = 1(64T=51.2мкс)0(18T=14.1мкс)
~vbl = 0(25T)1(128T)

Ну в принципе, и у меня почти также, только я считаю по-другому, исходя из тактовой частоты процессора:
2.5МГц / 164 / 306 = 49.8166...Гц

Насчёт hbl они где-то общитались: 51.2+14.1=65.3мкс, а если по тактам посчитать 164/2.5Мгц = 65.6мкс

А, понял, 18Т=14.4мкс :)

А насчёт vbl я вообще не понял, почему они считают в половину меньше, стандартная ТВ развёртка 625 чересстрочная, то есть в кадре 312,5 строк, с учётом Корветовской развёртки 306, а у них только 153...


Quote:

Originally Posted by esl (Post 273360)
и еще цитата

"при обращении МП к УВВ формируется один такт ожидания"
УВВ это все бисы

и еще похоже (но не уверен) что при форимровании CALL от контроллера прерываний на каждый байт добавляем по такту ожидания ....
может это что-то объяснит ?

Один такт ожидания при обращении к УВВ - это только +1 такт в тесте, т.к. там только одна команда обращения к PIC. Насчёт такта ожидания при формировании CALL я сомневаюсь.

А вот сколько тактов тратится на выход из режима HLT, мне неизвестно. На данный момент этот выход у меня мгновенный, и в этом, видимо, главная причина.

---------- Post added at 13:26 ---------- Previous post was at 13:13 ----------

Если порассуждать про команду HLT, то получится следующее.
Циклы МП могут быть 3,4 и 5 тактов. Первый цикл М1 - всегда 4 такта (я так думаю), по документации HLT выполняется за 7 тактов (минимум), т.е. это 4 такта цикла M1 и скорее всего 3 такта цикла ожидания прерывания. Если в начале цикла ожидания обнаруживается запрос на прерывание, то происходит выход из HLT за те-же 3 такта. Однако собственно запрос может возникнуть и на 1-2 такта раньше. Получается на выход из HLT потратится 4-5 тактов. Плюс один такт на обращение к УВВ описанный выше. Итого 5-6 тактов, что подтверждается результатами теста: я пробовал укорачивать размер кадра на 5 тактов, а не на 6 - результат не изменился.

esl 9th April 2010 14:53

еще про корвет, нашел ответ Скурихина на вопрос по таймеру

Quote:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
From: A.Skurikhin <sk@------->
To: Sergey Erokhin <esl@-----.--->
Date: Wednesday, May 21, 2003, 1:51:27 PM
Subject: PK8020, новая версия winbeta1
Files: <нет>
--====----====----====----====----====----====----====----====----====----===--
> какая точно частота подавалась на вход 2-го канала корвета ?

Сколько помню, есть две модификации Корвета. В исходной версии подвалось
50гц (VBL). Но очень быстро выяснилось, что для практических применений
гораздо лучше иметь на входе таймера строчную частоту(64мкс), а
веритикальный синхронизирующий импульс подавать на вход управления этого же
таймера. Такая схема позволяет настроить таймер в режим, когда по сигналу
вертикального синхроимпульса таймер сбрасывается, затем отсчитывает заданное
количество строк и генерит прерывание.
Используя эту технологию, можно обеспечить "гладкий" вывод на экран.

b2m 9th April 2010 14:56

Quote:

Originally Posted by esl (Post 273573)
еще про корвет, нашел ответ Скурихина на вопрос по таймеру

Спасибо. Хотя это мы уже выяснили :)

esl 9th April 2010 15:06

уточнение

~vbl = 0(25T1)1(128T1)
период Т1 = 164Т = 131.2 мксек

и цитата из Технического описания

Quote:

Нам осталось разобраться с обработкой прерываний, т.е. с сигналом INTA. При формировании контроллером прерываний D8(12.4) сигнала INT процессор заканчивает выполнение команды и начинает выполнять трехбайтную команду "CALL", которую он принимает из контроллера прерываний, при условии, что прерывания разрешены командой "EI".
Как это делается? Попробуем разобраться без наглядной иллюстрации. В первом цикле процессор выполняет цикл М10, который отличается от М1 наличием единицы в разряде D0 шины данных. Кроме этого вводится такт ожидания, потому при обращении к контроллеру прерываний вырабатывается сигнал CSDEV. Положительным фронтом сигнала на тактовом входе С триггера D15 (3.25) единица в D0 устанавливает выход триггера D15 (5 ножка) в единицу. На рисунке 5 сигнал на тактовом входе D15 показан.
Изменить состояние D15 теперь можно двумя способами. Первый: с приходом следующего положительного перепада на тактовый вход сигнал на линии D0 должен низкий уровень. Но такая ситуация может наступить после выполнения полностью команды "CALL". Второй способ: подать на вход R (RESET) сигнал низкого уровня. Из рисунка 5 видно, что это возможно при выполнении цикла записи (М3 или М5).
Итак, триггер D15 находится в состоянии единица. Сигнал высокого уровня с выхода триггера поступает на дешифратор адресов, запрещая его работу, и на микросхему D18 (3.27) - И. Поэтому сигнал INTA будет инвертированным сигналом DBIN. Сигнал INTA выбирает контроллер прерываний и в цикле М10 в процессор вводится код команды CALL из контроллера.
Команда "CALL" выполняется за пять машинных циклов, из которых первые три связаны с вводом команды в процессор, а два последних с записью в стек текущего адреса прерванной команды. Первый цикл (М10), мы уже разобрали. Затем выполняется два раза подряд цикл М8, отличающийся от М2 только единицей в разряде D0 шины данных. В первом цикле М8 читается младший байт адреса, а во втором цикле М8 - старший байт адреса перехода на программу обработки прерываний. В конце цикла М8 будет вырабатываться сигнал INTA, который и обеспечивает чтение из контроллера.
В четвертом и пятом циклах будет выполняться цикл М5, обеспечивающий запись в стек старшего и младшего байта адреса прерванной программы. Отрицательный сигнал с выхода регистра D27 (3.26) сбросит триггер D15 в нуль. Поэтому в четвертом и пятом циклах команды CALL сигнал INTA формироваться не будет.


Quote:

При обращении к УВВ низкий уровень сигнала CSDEV появляется на выходе D24 и процессор переходит в режим ожидания, устанавливая на выходе WI сигнал WAIT высокого уровня.
---------- Post added at 13:06 ---------- Previous post was at 13:05 ----------

Quote:

Originally Posted by b2m (Post 273575)
Спасибо. Хотя это мы уже выяснили :)

во первых обещался, во вторых информация от авторов вполне интересна сама по себе :)

esl 10th April 2010 01:29

Запустил тест на реале
sta/lda
0DFA - при записи в регистры БИС
0F0D - при записи в обычную память

добавил в TestDataInit еще один sta
Quote:

mvi a,020h
sta 0FB28h
sta 0FB28h
ei
стало

0DF9 - при записи в регистры БИС
0F0С - при записи в обычную память

а для
nop

1x 30e7
2x 30e7
3x 30e3

соответсвенно 1,2,3 sta


есть предложение
по результатам ваших коллективных эксперементов над процом
вышли мне детали, а я сведу в табличку, чтоб осталось в доступе

ivagor 10th April 2010 15:59

esl, интересно бы еще потестировать быстродействие записи в графическое и символьное ВидеоОЗУ и чтения оттуда (если в документации или еще где не написано, например, что доступ полностью прозрачный).

esl 10th April 2010 17:30

Quote:

Originally Posted by ivagor (Post 273859)
esl, интересно бы еще потестировать быстродействие записи в графическое и символьное ВидеоОЗУ и чтения оттуда (если в документации или еще где не написано, например, что доступ полностью прозрачный).

запись/чтение в ACZU и область клавиатуры и LUT совпадает с обычной памятью
это я проверял

судя по описанию в VRAM не должно быть торможения
но проверить надо бы конечно, но эт не скоро
надо тест переписать и опять железку достать ....

кстати, прогнал сегодня на корвете 8080 CPU Exerciser (KR580VM80A)
с вполне ожидаемым OK :)
какой точно стоит проц - не знаю, он под радиатором ...

а в доке вот что

Quote:

Рассмотрим теперь сигнал 1READY, который через разъем XS3 поступает на вход RA (готовность) процессора. Он формируется на выходе микросхемы D24 (ИЛИ). На вход D24 подаются два сигнала CSDEV и WAIT. CSDEV - это сигнал обращения к УВВ (при обращении он имеет низкий уровень). Когда обращения к УВВ нет, то на выходе 1READY сигнал высокого уровня и процессор, анализируя этот сигнал в такте Т2, не переходит в режим ожидания. При обращении к УВВ низкий уровень сигнала CSOEV появляется на выходе D24 и процессор переходит в режим ожидания, устанавливая на выходе WI сигнал WAIT высокого уровня. Сигнал WAITЕ формирует сигнал 1READY высокого уровня, поэтому, пропустив после такта Т2 один такт - такт ожидания, процессор продолжает работу с выполнения такта Т3. Таким образом при обращении к УВВ процессор автоматически вставляет один такт ожидания между тактами Т2 и Т3. Эта хитрость применена для надежного обращения к УВВ. На рисунке 5 такт ожидания не показан. Заметим только, что в случае появления такта ожидания сигнал DBIN автоматически расширяется до 800 нсек.


---------- Post added at 15:30 ---------- Previous post was at 15:26 ----------

Quote:

Originally Posted by ivagor (Post 273859)
esl, интересно бы еще потестировать быстродействие записи в графическое и символьное ВидеоОЗУ и чтения оттуда (если в документации или еще где не написано, например, что доступ полностью прозрачный).

кстати, могу выполнить любые ваши тесты :)

Code:

tasm -b -85 vst.asm
@copy vst.obj A.COM
@xkorvet d disk.kdi A.COM >nul
@xkorvet a disk.kdi A.COM >nul

эт батник, компилит ваш тест и сразу пишет на диск для эмулятора :)

ivagor 10th April 2010 19:52

esl, если я правильно понимаю, "ширина" активной области изображения корвета 51,2 мкс, а большинство ТВ отображают максимум примерно 48 мкс. Старые ТВ и мониторы имели регулировки развертки, которыми (почти всегда) можно было сжать изображение. Была (есть) проблема с обрезанием краев изображения корвета? Как было на старых мониторах, есть ли опыт подключения к новым ТВ (у которых нужных регулировок, как правило, нет)?
Сам я сидел за реальным корветом буквально несколько минут, про края изображения ничего не помню.


All times are GMT +4. The time now is 02:57.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.