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

User Tag List

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

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

  1. #1
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,811
    Спасибо Благодарностей отдано 
    62
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    28 сообщений
    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
    Адрес
    Москва
    Сообщений
    14,028
    Спасибо Благодарностей отдано 
    1,510
    Спасибо Благодарностей получено 
    2,070
    Поблагодарили
    800 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

  4. #3
    Veteran Аватар для TomCaT
    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,811
    Спасибо Благодарностей отдано 
    62
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    28 сообщений
    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
    Адрес
    Москва
    Сообщений
    14,028
    Спасибо Благодарностей отдано 
    1,510
    Спасибо Благодарностей получено 
    2,070
    Поблагодарили
    800 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

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

  6. #5
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    659
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TomCaT Посмотреть сообщение
    HALT, если разрешать прерывания нежелательно
    А как это там применяются halt-ы при запрещенных прерываниях????? о_О

    Если у тебя резинка ei im1 и прет rst38

    то цитирую
    003A ld hl,($5c78)
    003D inc hl
    003E ld ($5c78),hl
    из чего не сложно догадаться как получить синхронизацию с интом без halt-ов и im2-ов


    ну а если DI то...

    через IFF2 инт не увидишь...

    разве что воспользоваться портом FF
    +там еще понадобится счетчик
    чтоб определить а не посреди ли paper-а начался этот "типо хальт"
    Последний раз редактировалось NEO SPECTRUMAN; 09.10.2017 в 04:43.

  7. #6
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,653
    Спасибо Благодарностей отдано 
    245
    Спасибо Благодарностей получено 
    262
    Поблагодарили
    158 сообщений
    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.

  8. #7
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,028
    Спасибо Благодарностей отдано 
    1,510
    Спасибо Благодарностей получено 
    2,070
    Поблагодарили
    800 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

  9. #8
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,653
    Спасибо Благодарностей отдано 
    245
    Спасибо Благодарностей получено 
    262
    Поблагодарили
    158 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    По умолчанию

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

  11. #10
    Guru
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,024
    Спасибо Благодарностей отдано 
    79
    Спасибо Благодарностей получено 
    307
    Поблагодарили
    113 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для стандартного спека возможно использовать порт #FF. У Next'а есть порт, через который можно узнать текущую строку.

    Код:
    		ld d,63	; Номер строки
    		call WaitYLine
    Код:
    WaitYLine	ld bc,$243b
    		ld a,30
    		out (c),a
    		inc b
    .lp		in a,(c)
    		and 1
    		jr nz,.lp
    		ld bc,$243b
    		ld a,31
    		out (c),a
    		inc b
    .lp2		in a,(c)
    		cp d
    		jr nz,.lp2
    		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 в разделе События
    Ответов: 186
    Последнее: 11.08.2009, 14:26
  4. Di:Halt 2007 invitation
    от sq/skrju в разделе События
    Ответов: 12
    Последнее: 25.05.2007, 11:44

Ваши права

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