пока вы будете узнавать какая строка - она скорее всего закончится )
пока вы будете узнавать какая строка - она скорее всего закончится )
Последний раз редактировалось TomCaT; 09.10.2017 в 19:02.
Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
Власть людей сильнее, чем люди у власти.
Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)
Скрытый текст
Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
Мы все немного режем по дереву, а потом собираем корабли в бутылках.
Is it the same old story you are going to tell me
or is it the old story telling me and you we are the same?
http://www.sky.od.ua/~ptsk[свернуть]
Т.е. тебе нужно ждать нужное кол-во тактов?Так бы стразу и сказал
ld bc,нужное число тактов
call DELAY;ждёт нужно число тактов из bc>141такта
Код:; Z80 delay routine ; by Jan Bobrowski, license GPL, LGPL DELAY: ; wait bc T (including call; bc>=141) ; destroys: af, bc, hl ld hl, -141 add hl, bc ld bc, -23 _loop add hl, bc jr c, _loop ld a, l add a, 15 jr nc, _g0 cp 8 jr c, _g1 or 0 _g0 inc hl _g1 rra jr c, _b0 nop _b0 rra jr nc, _b1 or 0 _b1 rra ret nc ret
в EmuZwin
при запрещенных прерываниях
можно поймать начало фрейма при помощи
но срабатывает не всегдаКод:ld a,r jp pe,vsync_hit ld a,r jp pe,vsync_hit ld a,r jp pe,vsync_hit ...
тк сам интервал детекции начала фрейма
видимо может проскочить между командами
но усердное курение доков
и отсутствие этого в других эмуляторах
говорит нам, что это просто бага эмузвина
проще определить факт прерывания исполнения кода обработчиком прерываний.
или то что прога запущенна в эмузвине
Последний раз редактировалось NEO SPECTRUMAN; 13.01.2018 в 15:05.
Что-то тут не так. Есть известный баг Z80, но он работает с точностью до наоборот - при _разрешенных_ прерываниях в момент прихода импульса прерывания команда LD A,R выставляет флаг P/O в 0 (PO) (как будто они запрещены). Вот тут про это подробно: http://ivr.webzone.ru/articles/ldar_new/ .
Последний раз редактировалось Spectramine; 13.01.2018 в 22:03.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Баг есть баг, по вышеприведенной ссылке у автора программа время от времени из-за него висла. Возможно, кстати, что и не исправили. Тут вот люди не уверены, что исправлено.
А out (c),0 не документирована, исправлять там нечего. Поменялось поведение, и всё.
этот "баг" уровня недокументированной фичи
и элементарно обходится
и нужно достаточно постараться чтобы из за него все повисло...
(и вообще делать такую операцию без двойной проверки...
...ну я бы не стал...
мало ли где один бит сам по себе появится\исчезнет...
тем более когда время выполнения не критично...)
а вот от потери out C,0
легко перестают работать правильно кучи софтов...
а просто так его обойти без потери производительности уже нельзя...
- - - Добавлено - - -
но чавота про всякие iff-ы
я узнал из всяких статей с названиями недокументированный возможности...
...хотя в статье выше упоминается что в оригинальной ранней документации данная возможность описывалась
- - - Добавлено - - -
ВНЕЗАПНО нашел для себя новую недокументированную команду IM ?
Последний раз редактировалось NEO SPECTRUMAN; 13.01.2018 в 22:15.
Да фича-то достаточно бесполезная, как бы. Со включенными прерываниями словить начало кадра и так ума много не надо. А вот баг неприятный, ибо не все о нём знают.
Это да. А вот нефиг недокументированные команды юзать, дабы ибо.а вот от потери out C,0
легко перестают работать правильно кучи софтов...
а просто так его обойти без потери производительности уже нельзя...
Да опять же - где ж там возможность, когда баг. Что мешает в обработчике свой флаг выставить, а вне обработчика его проверять, вместо того, чтобы ерундой страдать.но чавота про всякие iff-ы
я узнал из всяких статей с названиями недокументированный возможности...
...хотя в статье выше упоминается что в оригинальной ранней документации данная возможность описывалась
Там сворее всего дублирование IM 0 или IM 1, но проверять всем лень.ВНЕЗАПНО нашел для себя новую недокументированную команду IM ?
Последний раз редактировалось Spectramine; 13.01.2018 в 23:10.
прерывания, нюансы. я для PMD-85 делал так:
Код:w: ld a,(flg) or a jp nz,w xor a ld (flg),a ;vector intvec: push af ld a,0 ld (flg),a pop af ret flg: db 0
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)