Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   подскажите насчет slow memory в родных машинах (http://zx-pk.ru/showthread.php?t=12625)

r0m 15th April 2010 01:42

подскажите насчет slow memory в родных машинах
 
Хотел multicolor 8x2 на компо выкатить, под pentagon бысто вьювер написал, а вот со spectrum128 (смотрю на EmuZWin 2.7) проблемы начались.

Вектор прерываний в #BE00 - 256 байт.
сам код активный раскранчиваю с #8000 по #BC00.

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

я так понимаю, что на 1 и 2 экране это занимает разное количество тактов.
А вот на сколько именно больше тактов занимает эта процедура в медленной памяти ?

я использую вот такой цикл на 2 линии:

LD SP,NN-----10 t
LD HL,NN-----10 t x16=160
PUSH HL------11 t x16=176

ADD HL,BC----11 t x4=044

INC HL------06 t
NOP--------04 t
INC HL------06 t
NOP--------04 t
INC HL------06 t

XOR E------04 t
OUT (C),A--12 t


итого-------432 tacts (строка в spectrum128 должна быть 216)


и еще, что там с нечетнотактовыми коммандами ?

Sinus 15th April 2010 05:21

Quote:

я так понимаю, что на 1 и 2 экране это занимает разное количество тактов.
как бывший владелец двухполевой машины докладываю, что оба экрана тормозные (если я правильно понял вопрос)

Quote:

PUSH HL------11
вот тут будет засада.
5 тактов уйдёт на чтение комманды и её декодирование (из быстрой памяти)
6* тактов уйдёт на запись (так как запись идёт в медленную память, то может уйти больше тактов). причём если в это время отрисовывается бордюр, то торможения не будет (в этом я не уверен на все 100, надо схему байта искать)

r0m 15th April 2010 06:20

sinus, я к сожалению на пейпере все время, речь то о картинке.
И кстати, компо то на кот. я хочу успеть, у вас =)

Так как узнать то сколько тактов занимает в медленной памяти тот же push например.
И вообще, существуют где-нибудь данные о весе в тактах комманд z80 в быстрой/в медленной памяти ?

---------- Post added at 05:20 ---------- Previous post was at 05:20 ----------

я тут попробовал раскранчить код из расчета того, что push = 12 tacts

LD SP,NN--------10 t

LD HL,NN--------10 t x16=160
PUSH HL---------12 t x16=192

LD HL,(#8000)---16 t x03=048

LD A,A----------06 t
XOR E-----------04 t
OUT (C),A-------12 t


итого-------432 tacts

но все равно все криво отображается =(

psb 15th April 2010 08:51

а попробуй просто подогнать n-ным количеством лишних нопов. если есть время, сделай смену цвета бордюра, будет видно, в какую сторону крутить задержку (т.к. если все синхронно, излом на бордюре должен быть по верт. линии).

r0m 15th April 2010 09:09

psb, да оно не стабильно - дрожит и в четное прерывание отрисовывается отлично от нечетного.
И потом 216 tacts per line - это ж точно !!!
Неужели это такая проблема, узнать растактовку в медленной памяти ?!

psb 15th April 2010 11:55

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

Quote:

Originally Posted by r0m (Post 275429)
дрожит

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

Quote:

Originally Posted by r0m (Post 275429)
и в четное прерывание отрисовывается отлично от нечетного.

так ты их по отдельности отстрой:)

Quote:

Originally Posted by r0m (Post 275429)
Неужели это такая проблема, узнать растактовку в медленной памяти ?!

может и не проблема, но... все забыто... наверняка если копать где-нить на WOSе, то можно все найти.

---------- Post added at 12:55 ---------- Previous post was at 12:53 ----------

кстати, LD A,A = 4 такта

pROF^4D 15th April 2010 12:06

rOm, насчет HT не заморачивайся, там точно Pentagon будет compo машиной. А рабочий вьювер под фирменные компы есть у Pulsar'a, посмотри картинку Risk'a c последнего Forever'a, к примеру. Думаю он сам здесь отпишется, что да как.

bigral 15th April 2010 12:31

Quote:

Originally Posted by r0m (Post 275429)
Неужели это такая проблема, узнать растактовку в медленной памяти ?!

вот тут описанно: http://scratchpad.wikia.com/wiki/Contended_memory

Но чтобы знать когда же сработал твой push в экран относительно положения луча нужно обязательно поменять цвет бордюра перед push-ем и потом обратно после push-а тогда будет четко видна черточка на бордюре (если черточка будет дрожать значит прога каждый раз попадает на разные циклы задержки и надо подгонять дальше).

riskej 15th April 2010 12:41

Quote:

Originally Posted by r0m (Post 275387)
Хотел multicolor 8x2 на компо выкатить, под pentagon бысто вьювер написал, а вот со spectrum128 (смотрю на EmuZWin 2.7) проблемы начались.

привет.

а чем тебя не устроил вьювер для пентагона от ТмК (входит в состав multiArtist)?

вьювер 8*2 multicolor для фирменных машин есть уже более полугода. есть 2 варианта: обычный режим показа и черездвухстрочник.
пример последнего можешь скачать здесь.

http://puls.nm.ru/riska.png

автор pulsar/simbols. сегодня скажу ему, чтобы отписался в теме.

pulsar 15th April 2010 16:14

доберусь домой отпишу.

вот что откопал, пока была пара минут.


All times are GMT +4. The time now is 21:04.

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