User Tag List

Показано с 1 по 10 из 531

Тема: ZX Like Pascal

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #9

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,104
    Спасибо Благодарностей отдано 
    1,340
    Спасибо Благодарностей получено 
    323
    Поблагодарили
    152 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Post

    ALKO, Письмо дошло, я просто торможу. Изучаю ЛайкПаскаль. Подожди маленько, я изучу и перепишу POP-PUSH-SCROLL, чтобы был ещё немного побыстрее, и без лишнего кода, как сейчас.
    Так вот, про прерывания. Посмотрел.
    Программа твоя не трогает прерывания, и всё работает в бейсиковском IM 0. Так что Andrew771 тебе правильно написал, DI EI лучше не писать. Скроллер использует стек нестандартно, поэтому во время его работы прерывание не должно происходить. Это обеспечивается вызовом скроллера сразу после очередного прерывания. (HALT - дождаться прерывания, а потом CALL POPPUSHSCROLL)

    Вообще прерывания это простая штука, но очень важная. И её не особо обговаривают в рамках классического Паскаля, это особенность конкретной архитектуры, в нашем случае ZX.
    Если ты медленно рисуешь на экране какой-нить фрактал, то тебе можно и не знать про прерывания, и про кадровую развёртку.
    Но для динамичных игр, а ЛайкПаскаль ориентирован на игры, понимание кадров и прерываний важно.

    Немного расскажу про 50-тигерцовые прерывания на ZX.

    В самом начале кадра, когда электронный луч подскакивает в самый верх, на нужную ножку процессора подаётся сигнал. Процессор-же, без суматохи, заканчивает очередную инструкцию основной программы. И готовится уже выполнять следующую инструкцию. И вот в этот момент, когда наш Z80 только готов выполнять очередную инструкцию, он спохватывается и смотрит: "ой, а ведь прерывание у меня на ножке! И прерывания разрешены!(Флаг включён инструкцией EI, и не выключен инструкцией DI) Пора отвлечься от основной программы." Чтобы не забыть к какой инструкции апосля вернуться, процессор заботливо заталкивает её адрес в стек.
    Вот тут и начинаются проблемы, если указатель стека используется нестандартно. Приходится выкручиваться. По разному.
    Так а где же лежит подпрограмма обработки прерывания? Если включен IM 2, то по адресу лежащему в регистре I как старший байт, а младший байт - 255(стабильная шина), этим адресом программист может управлять, записывая командой LD I,A нужный старший адрес. В других режимах прерывания IM 0 и IM 1 выполняется бейсиковский обработчик по адресу в ПЗУ 0038H. Тут пользовательские прерывания возможны, только извращением в виде держания стека в зоне ПЗУ. (или аппаратно, переписать ПЗУ.. включить в нулевую страницу вмето ПЗУ ОЗУ...) Это всё извращения ради извращения, так как проще использовать IM 2.
    Режим IM 2 хорош для нас тем, что мы можем сами написать что делать при прерываниях (например, играть музыку), и при этом не делается то, что нам не нужно, бейсиковское сканирование клавиш. У ЛайкПаскаля свой сканер клавиш есть, а бейсиковский только зря процессор занимает.
    [свернуть]


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

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Я кажись понял. Твоя процедура скроллинга использует прерывания
    Я ему прислал Скроллинг, который стек использует. HALT нужен, чтобы прерывание не случилось, пока идёт скролл. Чуть больше чем полкадра.
    Последний раз редактировалось Reobne; 16.10.2019 в 09:31.

    Этот пользователь поблагодарил Reobne за это полезное сообщение:

    ZX_NOVOSIB(16.10.2019)

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

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

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

Похожие темы

  1. PASCAL + MACRO11 (УКНЦ-ДВК).
    от hobot в разделе ДВК, УКНЦ
    Ответов: 341
    Последнее: 15.01.2022, 17:30
  2. Turbo Pascal для msx/msx2
    от Оззя в разделе MSX
    Ответов: 4
    Последнее: 23.02.2020, 23:59
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Ваши права

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