![]() |
подскажите насчет 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) и еще, что там с нечетнотактовыми коммандами ? |
Quote:
Quote:
5 тактов уйдёт на чтение комманды и её декодирование (из быстрой памяти) 6* тактов уйдёт на запись (так как запись идёт в медленную память, то может уйти больше тактов). причём если в это время отрисовывается бордюр, то торможения не будет (в этом я не уверен на все 100, надо схему байта искать) |
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 но все равно все криво отображается =( |
а попробуй просто подогнать n-ным количеством лишних нопов. если есть время, сделай смену цвета бордюра, будет видно, в какую сторону крутить задержку (т.к. если все синхронно, излом на бордюре должен быть по верт. линии).
|
psb, да оно не стабильно - дрожит и в четное прерывание отрисовывается отлично от нечетного.
И потом 216 tacts per line - это ж точно !!! Неужели это такая проблема, узнать растактовку в медленной памяти ?! |
ну у тебя ведь сам innerloop отрисовки всегда одинаковое кол-во тактов занимает? если считать без заморочек? когда спек тормозит, он точно так же тормозит всегда одинаково, пока рисует папер. пиксельная точность тебе не нужна, поэтому думаю можно подогнать "на глаз", не высчитывая.
Quote:
Quote:
Quote:
---------- Post added at 12:55 ---------- Previous post was at 12:53 ---------- кстати, LD A,A = 4 такта |
rOm, насчет HT не заморачивайся, там точно Pentagon будет compo машиной. А рабочий вьювер под фирменные компы есть у Pulsar'a, посмотри картинку Risk'a c последнего Forever'a, к примеру. Думаю он сам здесь отпишется, что да как.
|
Quote:
Но чтобы знать когда же сработал твой push в экран относительно положения луча нужно обязательно поменять цвет бордюра перед push-ем и потом обратно после push-а тогда будет четко видна черточка на бордюре (если черточка будет дрожать значит прога каждый раз попадает на разные циклы задержки и надо подгонять дальше). |
Quote:
а чем тебя не устроил вьювер для пентагона от ТмК (входит в состав multiArtist)? вьювер 8*2 multicolor для фирменных машин есть уже более полугода. есть 2 варианта: обычный режим показа и черездвухстрочник. пример последнего можешь скачать здесь. http://puls.nm.ru/riska.png автор pulsar/simbols. сегодня скажу ему, чтобы отписался в теме. |
|
| All times are GMT +4. The time now is 21:04. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.