Не понял почему кратное 4 но с виду работает.
org #8000
di
ld hl,#b200; включаем im 2
ld de,#b201
ld bc,256
ld (hl),#b3
ld a,h
ld i,a
ldir
ld a,201
ld (#b3b3),a
im 2
l1 ei ;4
halt ;4
ld a,(hl) ;7 ???????? Дополняем цикл
ld hl,0 ;10 Задержим
ld de,0 ;10
ld bc,500 ;10
ldir ;21*500=10500+16 (на выход)
ld a,7 ;7 Вывод полоски
out (#fe),a ;12
xor a ;4
out (#fe),a ;12
ld a,#7f ;7 опрос батона
in a,(#fe) ;11
rra ;8
jr c,l1 ;10
im 1
ret
Итого цикл 16632 - делится на 4
Результат - устойчивое статическое изображение
Последний раз редактировалось GM BIT; 16.03.2009 в 09:53.
(๑•̀ㅂ•́)و✧ Doors UI → https://t.me/doorsui | https://t.me/atari_xl_xe ← Atari XL/XE (●´ω`●)ゞ
Использую Spectaculator (режим Pentagon 128).
В приложении файл BO формат Storm
неверно же такты посчитаны =)
l1 ei ;4
halt ;4
ld a,(hl) ;7 ???????? Дополняем цикл
ld hl,0 ;10 Задержим
ld de,0 ;10
ld bc,500 ;10
ldir ;21*500=10500+16 (на выход) //21*499 + 16 = 10495
ld a,7 ;7 Вывод полоски
out (#fe),a ;12//11 - ошибка в питерской книге - верная дока на оффсайте
xor a ;4
out (#fe),a ;12 //11
ld a,#7f ;7 опрос батона
in a,(#fe) ;11
rra ;8//4
jr c,l1 ;10//12
итого получается - 10607 тактов =) странно кстати - видимо я тож где-то ступил...
ну и еще строчку ld a,h,i,a:im 2 забыл вставить, из-за этого не работает =)
у меня в SMT'шном анрыле на удивление работает... причем полоска не по центру экрана (как у Бриза на шоте), а с левого края.
Последний раз редактировалось psndcj; 16.03.2009 в 09:37.
Текст подправил. Про неправильные Питерские такты вообще первый раз слышу (спасибо) всегда пользовался и парился. Полоска у меня также слева. И теперь совсем непонятно почему она замерла. Может не 4 а нечетное число
Последний раз редактировалось GM BIT; 16.03.2009 в 10:00.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Вот и я об этом. Каждый выкручивается по своему.
У меня в Unrealfix программа Dynamice в режимах Пентагона и Скорпиона работает по разному. Я имею ввиду картинку на бордюре. С виду создаётся впечатление, что у этих клонов разное количество тактов на построение одной линии экрана.
насколько я помню - у всех СНГшных клонов 224 такта а у зарубежных другое,
216 вроде. Может кто просветит? Зараннее спасибо.
Добавлено через 14 минут
Здесь эта процедура используется для задержки, чтоб полоска вышла на видимую часть бордюра. Я же использовал для выравнивания числа тактов, в конце всей программы. Значение ВС минимально возможное.
А так можно долго подбирать, если рисуешь большую картинку.
Последний раз редактировалось VNN_KCS; 16.03.2009 в 10:39. Причина: Добавлено сообщение
Еще вопрос по последней программе:
Если в дебагере Spectaculator'a поставить остановку на ld a,(hl) счетчик тактов в этот момент всегда будет показывать 29т из 71680
Откуда эти 29 кто объяснит? (вроде бы ret, ei, halt и все, или я чего-то не понимаю)
Совет сделать все кратным 4 тактам я понял... Т.е. чтоб код всей программы выполнылся за время кратное 4 тактам (необязательно одинаковое в каждом прерывании).
Вопрос1: В каком эмуле удобно смотреть кол-во тактов за прерывание и т.п.?
Вопрос2: Как синхронизироваться с нулевым отсчетом
Вопрос3: Сколько тактов на разных клонах длится INT, и как его вычислять, После выполнения HALT проходит сколько тактов? (длительность INT + 4 такта выполнения HALT + 0..3 смещение по кратности 4), Как на эти характеристики влияет М1?
З.Ы.: Сам сталкнулся с данной проблемой при написании демки, а для некоторых эффектов мне важно смещение в 10тактов. Причем расчитанные данные исходя из того что я знаю не подошли, пришлось подстраивать визуально, что не есть гуд...
Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder
С команды HALT начинается прорисовка экрана вместе с бордюром.
Добавлено через 14 минут
Мне кажется так: HALT - пошла прорисвка, затем IM2 обработчик - его такты. Ну а потом всё остальное. 4 такта HALT-а так или иначе войдут в программу. Если не на первом, так на втором INT-е.
Вычисление INT-а: число тактов на горизонтальную линию помножь на количество линий растра. Например Пентагон - 224х320=71680.
Была у меня программка вычисляющая всё это(не моя), но всё ушло в небытие.
Последний раз редактировалось VNN_KCS; 16.03.2009 в 17:41. Причина: Добавлено сообщение
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)