Если это своя программа - тут понятно.
Если это модификация другой программы, а прерывания там запрещены, а IM1 будет портить некоторые ячейки, а IM2 потребует over 256 байт...
Если это своя программа - тут понятно.
Если это модификация другой программы, а прерывания там запрещены, а IM1 будет портить некоторые ячейки, а IM2 потребует over 256 байт...
Помни. Только на компьютере можно семь раз 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[свернуть]
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Это только на глючном компе с постоянно нестабильной шиной данной, на всех нормальных спек-совместимых компах в момент прерывания на шине строго #FF, соответственно, хватит двух байт для вектора прерывания, плюс 7 байт на инициализацию IM 2 (LD A,N: LD I,A: IM 2: EI), плюс, возможно, пару байт на обработчик прерывания (EI:RET). (Естественно, в целях совместимости, не стОит назначать вектор прерывания в медленной памяти - будет дико тормозить на синклеровских моделях. Без головняка - строго в адресах #8000-#BEFF.)
Я не знаю, почему большинство программ так стараются забить 257 байт одним байтом для однозначного вектора прерывания, но реальных причин для этого нет. Достаточно по адресу #IIFF вписать произвольный адрес процедуры прерывания. (Иначе в 128к модели в 48бейсик-странице ПЗУ не использовали бы свободный участок - потеряли бы совместимость. А он использован, но для совместимости по адресам #xxFF оставлено #FFFF (Амстрад, кстати, в своей редакции 48бейсик-страницы ПЗУ на это забил, за что и поплатился потерей совместимости)).
Последний раз редактировалось Spectramine; 09.10.2017 в 08:57.
Двухбайтник в наше время был признаком весьма плохого тона) Все игры, где была двухбайтная таблица прерываний, приходилось переделывать под 257 байт. Даже в том же Диззи-7, который мы релизили с Исайкой (к слову сказать, у Исайчика Пентагон на котором нестабильная шина данных из-за неправильно подключенного AY, на сколько я помню), - пришлось переделывать 2-х байтник на 257.
Да, это имеет смысл для глючных машин. Правда, ещё для машин с подключенной периферией, выставляющей на шину нужный младший байт в момент своего прерывания, я про это забыл, а ведь есть такая AMX мышь, которая таким страдает (и которую пришлось бы отключать, запуская на 128к машинах старые игры с вектором в ПЗУ, как Bomb Jack). А больше причин нет, насколько я понимаю, и на подавляющем большинстве машин двухбайтный вектор будет работать ок.
Последний раз редактировалось Spectramine; 09.10.2017 в 09:07.
Не вполне понятно, что тебе надо, TomCaT.
Если просто нужна задержка, чтобы притормозить чужую программу, то можно ведь тупо нагрузить процессор.
Семь байт занимает.Код:LD H,D LD L,E LD BC,3333 LDIRЕстественно не один байт HALT-а.
Последний раз редактировалось 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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)