ZXNet эхоконференция «code.zx»


тема: timing



от: Dmitry Lomov
кому: Leonid Mishankov
дата: 29 Nov 1999
Hello, Leonid!

Однажды, Пон Hоя 29 1999 01:25, Leonid Mishankov писал к All о [timing]:

LM> Как можно однозначно определить количество линий от HALT и до начала
LM> экрана???

на пентагоне - никак, на Скорпе - можно, посртедством порта #FF.

LM> Как отличить Скорп, где все команды дополняются до чётного кол-ва
LM> тактов, от другой, абсолютно любой тачки, но где нет wait?

делается цикл и считается количество исполнений цикла за фрейм.
в цикле исполняются либо только четные, либо нечетные.

LM> У меня в Скорпе без wait'а до начала экрана 62 линии,

64.

LM> в Пентагоне 78,

80.

LM> а сколько в Скорпе с wait'ом?

64, но такты растягиваются ;)

LM> Сколько времени пройдет в Скорпе с момента подачи OUT (#FE) и до того
LM> момента, когда я увижу это на экране?

на бордюре изображение привязывается к знакоместной сетке.

LM> Существуют ли тачки с количеством тактов в строке, отличным от 224?

да - в основном, скорпы/ленинграды/композиты.

LM> Почему, когда я скролю горизонтальные разноцветные полоски в области
LM> атрибутов, они начинают дрожать, когда, если изображение остановить,
LM> всё чётко?

не понял, о чем ты.

Всего хорошего.
Дмитрий.

от: Alexander Ageev
кому: Leonid Mishankov
дата: 30 Nov 1999
Hello Leonid!

Tuesday November 30 1999 06:39, Leonid Mishankov wrote to Alexander Ageev:
LM>>> Существуют ли тачки с количеством тактов в строке, отличным от
LM>>> 224?
AA>> Да, это Speccy 128 и последующие модели (фирменные %)

LM> А у тебя нет информации, как в различных фирменных машинах
LM> вырабатываются wait'ы?

Почитай FAQ:

[ftp://zx-museum.org.ru/ftp.void.jump.org/pub/sinclair/specfaq/] : [HTML]
[ftp://zx-museum.org.ru/ftp.void.jump.org/pub/sinclair/specfaq/specfaqh.zip]
[Text]
[ftp://zx-museum.org.ru/ftp.void.jump.org/pub/sinclair/specfaq/specfaqt.zip]
Please note that the Russian mirror may not be up to date.


Hадеюсь с английским проблем нет %)

Для Speccy 48k:

When the ULA is drawing the screen, it needs to access video memory; the RAM
cannot be read by two devices (the ULA and the processor) at once, and the ULA
is given higher priority (as the electron beam cannot be interrupted), so
programs which run in the contended memory (from #4000 to #7FFF) or try to
read from port #FE (when the ULA must supply the result) will be slowed if the
ULA is reading the screen. Note this effect occurs only when the actual screen
is being drawn; when the border is being drawn, the ULA supplies the result
and no delays occur. The precise details are as follows:

+ At cycle #14335 (just one cycle before the top left corner is reached) the
delay is 6 cycles.
+ At cycle #14336 the delay is 5 cycles, and so on according to the
following table:
Cycle # Delay
------- -----
14335 6 (until 14341)
14336 5 ( " " )
14337 4 ( " " )
14338 3 ( " " )
14339 2 ( " " )
14340 1 ( " " )
14341 No delay
14342 No delay
14343 6 (until 14349)
14344 5 ( " " )
14345 4 ( " " )
14346 3 ( " " )
14347 2 ( " " )
14348 1 ( " " )
14349 No delay
14350 No delay

etc., until the cycle #14463 (always relative to the start of the interrupt),
in which the electron beam reaches the border again for 96 more cycles. And at
cycle #14559 the same situation repeats. This is valid for all 192 lines of
screen data. While the ULA is updating the border the delay does not happen at
any time.

Для Speccy128:

Memory banks 4-7 are contended, i.e. the processor shares them with the ULA.
This reduces the speed of memory access in these banks. Port #FE is still
contended, and port #7FFD also causes contention, although the precise details
of this are not known.

+ There are 228 T-states per scanline, as opposed to 224.
+ There are 311 scanlines per frame, as opposed to 312.
+ There are 63 scanlines before the television picture, as opposed to 64.

The contended memory timings for these machines are similar to that for the
48K machine, except that the 6,5,4,3,2,1,0,0 pattern starts at 14361 T-states
after the interrupt, as opposed to 14335.

Для Speccy +2/+3:

The contended memory timings differ on the +2A/+3 from the earlier machines;
firstly, the timing differences mean that the top-left pixel of the screen is
displayed 14364 T-states after the 50 Hz interrupt occurs, as opposed to
14336. The T-states (relative to the interrupt) at which delays occur are
given in the following table:

Cycle # Delay
------- -----
14361 1
14362 No delay
14363 7
14364 6
14365 5
14366 4
14367 3
14368 2
14369 1
14370 No delay
14371 7
14372 6

and so on, until cycle 14490, when the display of the first scanline on the
screen has been completed, and no more delays are inserted until 14589
(=14361+228) when the cycle repeats. The other difference occurs for
instructions which have multiple 'pc+1' or 'hl' entries in the breakdown for
the other machines: on the +2A/+3, these entries are combined into just one.
This means that, for example, JR becomes pc:4,pc+1:8.
Like the base 128K machine, RAM banks 4-7 are contended. However, port #FE is
not; whether ports #7FFD and #1FFD are contended is currently unknown.

LM> P.S. Копал гаму, нашел там мультиколор, заточеный под что-то, имеющее
LM> 212 тактов в строке...

212 не было ни у одного клона,imho


Stinger.

от: Dmitry Lomov
кому: Leonid Mishankov
дата: 30 Nov 1999
Hello, Leonid!

Однажды, Втp Hоя 30 1999 06:28, Leonid Mishankov писал к Dmitry Lomov о
[timing]:

LM>>> Как можно однозначно определить количество линий от HALT и до
LM>>> начала экрана???
DL>> на пентагоне - никак, на Скорпе - можно, посртедством порта #FF.

LM> А как, не мог бы поконкретнее, плз?

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

LM>>> Как отличить Скорп, где все команды дополняются до чётного
LM>>> кол-ва тактов, от другой, абсолютно любой тачки, но где нет
LM>>> wait?
DL>> делается цикл и считается количество исполнений цикла за фрейм.
DL>> в цикле исполняются либо только четные, либо нечетные.

LM> Пока ничего умнее L0 INC HL:JP L0 в голову не пришло...
LM> Останавливал цикл обработчик прерываний. А можно ли более точно
LM> измерить? Вот бы до +-4 тактов...

я делал с точностью до 1-го такта (для Пентагона). принцип похитрее, но в общем
- то же самое.

LM>>> Сколько времени пройдет в Скорпе с момента подачи OUT (#FE) и до
LM>>> того момента, когда я увижу это на экране?
DL>> на бордюре изображение привязывается к знакоместной сетке.

LM> сорри, немного не понял... То есь когда считается байт атрибута, тогда
LM> появиться и цвет на бордере?

по срезу H2 информация из порта FE защелкивается в экранный регистр.

LM> Я имел ввиду, что OUT (C),A исполняется
LM> 12 тактов, дык что, ровно через 12 тактов я и увижу эффект?

на предпоследнем такте этой команды. о том, когда ты его увидишь - см. выше.

LM>>> Существуют ли тачки с количеством тактов в строке, отличным от
LM>>> 224?
DL>> да - в основном, скорпы/ленинграды/композиты.

LM> О! Hо ведь там тоже 224, только надо считать, что все неч. команды
LM> растягиваются до чётных... :-/ Или нет?

не путай такты в строке и тормоз на нечетных. такты в строке подразумеваются,
естественно, в составе четных команд.

LM> Почему-то на Скорпе наблюдается дрожание мультиколора в пределах
LM> одного знакоместа в любой части экрана. Если после HALT ставлю
LM> команду, занимающую кол-во тактов, нечетное 4, дрожание
LM> прекращается... Так и не понял, почему...:(

элементарно, Ватсон ;)
в цикле ожидания по HALT выполняются NOP, отсюда привязка. все, что выполняется
от HALT до HALT, должно быть кратно четырем тактам (включая цикл подтверждения
прерывания - 19 тактов, вроде), иначе будет дергаться.
если работаешь на бордюре, то все еще сложнее - нужно не только выдержать
кратность четырем (обычная музыка идет в баню), но и зафиксить ход выполнения
команд с точностью до такта, т.е. привязать сигналы в схеме (INT, например), к
конкретному такту внутри команды HALT (он же NOP). я эту задачу победоносно
решил :) для Скорпа, кстати, она принципиально не решаемая.


Всего хорошего.
Дмитрий.

от: Dmitry Lomov
кому: Kirill Frolov
дата: 02 Dec 1999
Hello, Kirill!

Однажды, Сpд Дек 01 1999 04:59, Kirill Frolov писал к Dmitry Lomov о [timing]:

LM>>> У меня в Скорпе без wait'а до начала экрана 62 линии,
DL>> 64.

KF> Oткуда такая разница ? Компутер переделан ?

есть такое понятие - схема называется ;)
из нее, родимой, да и на практике это подтверждается.

у скорпа расклад 64/192/56, у пентагона 80/192/48.

LM>>> Сколько времени пройдет в Скорпе с момента подачи OUT (#FE) и до
LM>>> того момента, когда я увижу это на экране?
DL>> на бордюре изображение привязывается к знакоместной сетке.

KF> Вернее к концу i/o цикла процессора.

?


Всего хорошего.
Дмитрий.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новости! - Аrs развивает бурную деятельность на Internet'e, где создал www страничку "Fatality".
Обзор игрушек - Обзор новых игровых программ: ПОСЛЕДНЯЯ АВАНТЮРА
News - о новом спектрумовском пати Di:Halt'99.
Исходники - В качестве приложения я выкинул на этот диск свои исходники к третей части Империи...
От автора - Да пошли вы все!

В этот день...   29 марта