Важная информация

User Tag List

Страница 1 из 8 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 80

Тема: Вместо HALT

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,795
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Вместо HALT

    Привет, м.-ув. All.

    Есть два взаимоисключающих вопроса:
    1)
    Если может знает кто, какие бывают короткие программные замены инструкции HALT, если разрешать прерывания нежелательно, а делать процессору пока как бы нечего? Конечно, желательно соответствие именно по задержке, считая либо "максимальную длину HALT", либо "HALT минус среднее время на обработчик прерывания", на более-менее стандартной конфигурации машины (3,5МГц без турбо, при 50Гц, при разрешенных прерываниях и при более-менее стандартной прошивке ПЗУ). Подошел бы любой из двух вариантов, там, наверное, будут константы для подгонки.

    То есть, например, если включен IM 1 на стандартном 48к, и при этом в коде две подряд команды HALT, то нужна процедура задержки, по времени соответствующая второй команде HALT (так как первая команда HALT могла быть и короткой).

    2)
    Может, проще отследить начало кадра? Хотя почему-то помнится, что без HALT тут нет простых аппаратно-независимых решений.
    Помни. Только на компьютере можно семь раз 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
    [свернуть]


  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,563
    Спасибо Благодарностей отдано 
    1,224
    Спасибо Благодарностей получено 
    1,766
    Поблагодарили
    685 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Не совсем понятно, зачем это все. Если описать первопричину, то, возможно, можно было бы и что-то посоветовать)
    Или говоря иносказательно, зачем ехать в Киев через Магадан? Только если в Магадане живет очень любимый родственник. А если родственника нет, то... HALT.

  4. #3
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,795
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если это своя программа - тут понятно.

    Если это модификация другой программы, а прерывания там запрещены, а 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
    [свернуть]


  5. #4
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,563
    Спасибо Благодарностей отдано 
    1,224
    Спасибо Благодарностей получено 
    1,766
    Поблагодарили
    685 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение
    Если это своя программа - тут понятно.

    Если это модификация другой программы, а прерывания там запрещены, а IM1 будет портить некоторые ячейки, а IM2 потребует over 256 байт...
    Это не обьяснение. Зачем нужна имитация HALT? Особенно в чужой программе.

  6. #5
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,643
    Спасибо Благодарностей отдано 
    243
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение
    IM2 потребует over 256 байт...
    Это только на глючном компе с постоянно нестабильной шиной данной, на всех нормальных спек-совместимых компах в момент прерывания на шине строго #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.

  7. #6
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,563
    Спасибо Благодарностей отдано 
    1,224
    Спасибо Благодарностей получено 
    1,766
    Поблагодарили
    685 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от weiv Посмотреть сообщение
    Это только на глючном компе с постоянно нестабильной шиной данной, на всех нормальных спек-совместимых компах в момент прерывания на шине #FF
    Двухбайтник в наше время был признаком весьма плохого тона) Все игры, где была двухбайтная таблица прерываний, приходилось переделывать под 257 байт. Даже в том же Диззи-7, который мы релизили с Исайкой (к слову сказать, у Исайчика Пентагон на котором нестабильная шина данных из-за неправильно подключенного AY, на сколько я помню), - пришлось переделывать 2-х байтник на 257.

  8. #7
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,643
    Спасибо Благодарностей отдано 
    243
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Двухбайтник в наше время был признаком весьма плохого тона) Все игры, где была двухбайтная таблица прерываний, приходилось переделывать под 257 байт. Даже в том же Диззи-7, который мы релизили с Исайкой (к слову сказать, у Исайчика Пентагон на котором нестабильная шина данных из-за неправильно подключенного AY, на сколько я помню), - пришлось переделывать 2-х байтник на 257.
    Да, это имеет смысл для глючных машин. Правда, ещё для машин с подключенной периферией, выставляющей на шину нужный младший байт в момент своего прерывания, я про это забыл, а ведь есть такая AMX мышь, которая таким страдает (и которую пришлось бы отключать, запуская на 128к машинах старые игры с вектором в ПЗУ, как Bomb Jack). А больше причин нет, насколько я понимаю, и на подавляющем большинстве машин двухбайтный вектор будет работать ок.
    Последний раз редактировалось Spectramine; 09.10.2017 в 09:07.

  9. #8
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не вполне понятно, что тебе надо, TomCaT.
    Если просто нужна задержка, чтобы притормозить чужую программу, то можно ведь тупо нагрузить процессор.
    Код:
      LD H,D
      LD L,E
      LD BC,3333
      LDIR
    Семь байт занимает. Естественно не один байт HALT-а.

  10. #9
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,795
    Спасибо Благодарностей отдано 
    54
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    22 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    можно ведь тупо нагрузить процессор.
    Код:
      LD H,D
      LD L,E
      LD BC,3333
      LDIR
    Семь байт занимает.
    Именно что-то такое и нужно.
    Так понимаю, получается около 70000, ну, а обработчик уже тут можно вычесть...

    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    Двухбайтник в наше время был признаком весьма плохого тона
    Совершенно верно. Даешь максимальную совместимость.
    Последний раз редактировалось 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
    [свернуть]


  11. #10
    Master Аватар для DenisGrachev
    Регистрация
    15.04.2011
    Адрес
    г. Новосибирск
    Сообщений
    741
    Спасибо Благодарностей отдано 
    39
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    44 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение
    Именно что-то такое и нужно.
    Так понимаю, получается около 70000, ну, а обработчик уже тут можно вычесть...
    - - - Добавлено - - -
    Совершенно верно. Даешь максимальную совместимость.
    Т.е. тебе нужно ждать нужное кол-во тактов?Так бы стразу и сказал

    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 из 8 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. HALT контроллер
    от zx_ в разделе БК-0010/0011
    Ответов: 9
    Последнее: 28.09.2018, 00:49
  2. Di:Halt 99
    от Vinnny в разделе События
    Ответов: 29
    Последнее: 13.07.2018, 19:59
  3. Di:HALT:2009
    от TmK в разделе События
    Ответов: 206
    Последнее: 11.08.2009, 14:26
  4. Di:Halt 2007 invitation
    от sq/skrju в разделе События
    Ответов: 12
    Последнее: 25.05.2007, 11:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •