User Tag List

Страница 32 из 54 ПерваяПервая ... 282930313233343536 ... ПоследняяПоследняя
Показано с 311 по 320 из 531

Тема: ZX Like Pascal

  1. #311

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ага, а ещё процедуры с параметрами, локальные переменные, структуры-записи (record), типы longint/longword...

  2. #312

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

    По умолчанию

    Встроеная процедура Asm. У полного Паскаля уже есть такое зарезервированное слово.
    Да и по смыслу тоже как-то название не подходит. Может заменить, пока не поздно, на USR или CALL... или ещё что-то такое. CALL_USR ASM_CALL.

    Оно-же сразу четыре выгоды даст.
    1 Человек не спутается.
    2 Парсер расцветки синтаксиса не спутается.
    3 ЛайкПаскаль можно развивать до такой степени, что таки будет реализован правитьный ASM...END/
    4 Код написаный в ЛайкПаскале проще будет адаптировать для полноценного Паскаля. (Например, если автор игры захочет повторить её на ПиСи)

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

    Bolt(15.10.2019)

  3. #313

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ALKO, проверь, когда ты вставлял SCROLL, из сторонней библиотеки, не прихватил-ли ты случайно ORG
    Оператор ORG устанавливает, куда дальше, будет компилироваться ассемблер. Как правило ORG нужен только один, в начале программы. И только в особых случаях он нужен ещё где-то.
    Просто сотри лишний. Пусть всё компилируется по порядку.
    Я этот самый ORG специально и прописал, чтоб данная процедура находилась по адресу 40000. Да и оно не пересекалось с музоном.

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

    Reobne, я там в письме указал, не знаю, дошло ли, или может в спам попало. Карочь, Ваша процедурка скролла работает с моей программой, но видимо стек засирается c каждым новым вызовом, из-за чего на тайлах пола с каждым циклом всё больше и больше каши образуется.
    Как побороть сей баг?

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

    ПАРДОН! Отбой!
    Проблема решилась командой Halt перед вызовом функции. Терь всё ч0тка.

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

    капееетссс


    В Горбатого вселилась сега. Это уже контра-хард-корпс какой-то.
    Последний раз редактировалось ALKO; 15.10.2019 в 20:51.

    Эти 3 пользователя(ей) поблагодарили ALKO за это полезное сообщение:

    Andrew771(15.10.2019), Oleg N. Cher(15.10.2019), ZX_NOVOSIB(15.10.2019)

  4. #314

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Есть галочки, которые имеют определённое значение для конкретного проекта, поэтому можно разгрузить человеческую память и внимание, вписав эти опции в текст программы. Например первая строка имеет коментарий: {$options -a -b}
    Сейчас реализовано в bat-нике. Можешь свой bat-файл написать с флагами. Подробности в справочном файле.
    А вообще, да, лучше бы в код паскалевский вставить.
    Я думаю сократить флаги - сделать только "атрибуты да/нет" и "виртуальный экран да/нет". А то много флагов может путать, хоть и тонкая настройка.

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

    Цитата Сообщение от Bolt Посмотреть сообщение
    Ага, а ещё процедуры с параметрами, локальные переменные, структуры-записи (record), типы longint/longword...
    longint сейчас использую в своей пишущейся игре Russian Railway Magnate в виде асмовских процедур. А в Паскаль встроить думаю как, чтобы не перейти на 32 бит
    Процедуры с параметрами и локальные переменные в планах есть, т.к. хочу сделать нативный Паскаль, а без них никак.

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

    Цитата Сообщение от Reobne Посмотреть сообщение
    ЛайкПаскаль можно развивать до такой степени, что таки будет реализован правитьный ASM...END/
    вот это, ИМХО, самое правильное. Оттуда и процедурку можно будет вызвать обычным асмовским call.

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

    Цитата Сообщение от ALKO Посмотреть сообщение
    ПАРДОН! Отбой!
    Проблема решилась командой Halt перед вызовом функции. Терь всё ч0тка.
    ALKO, музыка появилась?

  5. #315

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    ALKO, музыка появилась?
    С этим пока странности... А может тоже надо HALT впендюрить в цикл PLAY? хмм.. Ну, потом буду маяться. Ща надо игровую логику пилить. Проверки на столкновения. Благо теперь скоростей хватает на гомна-код в виде набора IF-ов.

  6. #316

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я кажись понял. Твоя процедура скроллинга использует прерывания, и музыка тоже. Нужно что-то с этим делать.

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

  8. #317

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Нужно что-то с этим делать.
    EI
    CALL MUZ
    DI
    RET
    ???

  9. #318

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    halt - это ожидание прерывания. Не поможет.

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

    скорее всего, после скроллинга сразу же вызывать музон в этой же процедуре. DI, EI не трогать.

  10. #319

    Регистрация
    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)

  11. #320

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Я ему прислал Скроллинг, который стек использует. HALT нужен, чтобы прерывание не случилось, пока идёт скролл. Чуть больше чем полкадра.
    Так может, тогда перед вызовом скроллинга поставить DI, а после EI и HALT? А музыка в прерывании, обычные вызовы.

Страница 32 из 54 ПерваяПервая ... 282930313233343536 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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