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

User Tag List

Страница 53 из 54 ПерваяПервая ... 495051525354 ПоследняяПоследняя
Показано с 521 по 530 из 531

Тема: ZX Like Pascal

  1. #521
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В любом месте Паскаль-программы можешь вызывать оператор asm(имя_процедуры), который вызовет процедуру на ассемблере. Процедура пишется после последнего END программы на Паскале. После выполнения asm-овской процедуры управление переходит к следующему оператору Паскаля.
    В процедуре на асме можешь творить всё, что угодно, оно без изменения перенесется в файл asm.

  2. #522
    Activist
    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    425
    Спасибо Благодарностей отдано 
    133
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    59 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Процедура пишется после последнего END программы на Паскале. После выполнения asm-овской процедуры управление переходит к следующему оператору Паскаля.
    Иногда ассемблерный код нужен не в конце программы, которая перевалит за #C000 а например вначале.
    И как насчет подгрузки текстов для самого паскаля, аля библиотеки процедур, а то всё в одном файле, как-то ...

  3. #523
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И как насчет подгрузки текстов для самого паскаля, аля библиотеки процедур, а то всё в одном файле, как-то ...
    Андрев771 ведь с самого начала дал понять, что модернизацией СДК заниматься не намерен, если хочется доработок - есть исходник на Делфях.

  4. #524
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    Андрев771 ведь с самого начала дал понять, что модернизацией СДК заниматься не намерен, если хочется доработок - есть исходник на Делфях.
    Почему это? Паскаль я периодически дорабатываю, все предложения принимаются и рассматриваются. Это ты с законченными нашими играми перепутал

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Иногда ассемблерный код нужен не в конце программы, которая перевалит за #C000 а например вначале.
    И как насчет подгрузки текстов для самого паскаля, аля библиотеки процедур, а то всё в одном файле, как-то ...
    Для асмовских процедур в файле PRG можешь расставлять любое количество ORG-ов с любыми адресами, в том числе меньше, чем у Паскаль-программы (только тогда рассчитай, чтобы они не заехали на Паскаль). Они все без изменения перенесутся в файл ASM.
    Или тебе надо саму Паскаль-программу дробить по разным адресам?

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

    В одном файле PRG удобнее и экономичнее держать Паскаль+Асм, лишнего не подцепишь, а также искать легко

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

    Dart Alver (25.08.2020)

  6. #525
    Activist
    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    425
    Спасибо Благодарностей отдано 
    133
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    59 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Для асмовских процедур в файле PRG можешь расставлять любое количество ORG-ов с любыми адресами, в том числе меньше, чем у Паскаль-программы (только тогда рассчитай, чтобы они не заехали на Паскаль)
    А, ну да, точно про такой костыль не подумал. Но всё же возможность встраивать asm непосредственно в тело паскаля думаю было бы полезно. Даже подозреваю что это не особо сложно сделать, достаточно обработки пары тегов - для начала ассемблерного кода и для окончания. А чтобы не спутать тег окончания с командами для ассемблера лучше заточить его под asm-комент типа ;endasm или похожее.

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Или тебе надо саму Паскаль-программу дробить по разным адресам?
    Об этом не думал, но в принципе достаточно интересная идея. Вообще идеально было бы выделять области памяти которые будут обходить мимо процедуры и данные паскаля, но сомневаюсь что на данный момент это реально.

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    В одном файле PRG удобнее и экономичнее держать Паскаль+Асм, лишнего не подцепишь, а также искать легко
    Не согласен. Дело конечно предпочтений, но когда программа насчитывает хренову кучу процедур, чтобы дотянуться до которых надо перелистать туда-сюда кучу десятков (а то и сотни) строк это уже не легко )) Я бы предпочёл создавать некое количество небольших файлов подключаемых в основную программу в которых легче ориентироваться.

  7. #526
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Разбивка на модули нужна. А то на ctrl+F уже мозоли натëр.
    Ещë бы добавить флаг выбора рендеринга в виртуальный / реальный экран. Именно не перед компиляцией, а чтоб была такая возможность во время исполнения программы.
    + наличие spr_lib процедур было бы весьма кстати.

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

  9. #527
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    А, ну да, точно про такой костыль не подумал. Но всё же возможность встраивать asm непосредственно в тело паскаля думаю было бы полезно.
    Ну это всё ж не костыль. Ты же в файле исходника PRG всё-равно пишешь асмовские процедуры и коды спрайтов, заодно и ORG-и вставляешь.
    Команду asm с кодом внутри Паскаля вставлю, я тоже о ней думал, удобно. Можно заодно читать сразу паскалевские переменные (это и сейчас можно), вставляешь знак подчеркивания и заглавными буквами имя переменной или константы (например, если в Паскале задана переменная zx123, то ее можно вызвать в своей процедуре по имени _ZX123).

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Об этом не думал, но в принципе достаточно интересная идея. Вообще идеально было бы выделять области памяти которые будут обходить мимо процедуры и данные паскаля, но сомневаюсь что на данный момент это реально.
    Это реально, достаточно придумать оператор Паскаля ORG address, который можно вставлять в любом месте Паскаля. Впрочем, можно его вставлять и внутри asm/endasm.

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Не согласен. Дело конечно предпочтений, но когда программа насчитывает хренову кучу процедур, чтобы дотянуться до которых надо перелистать туда-сюда кучу десятков (а то и сотни) строк это уже не легко )) Я бы предпочёл создавать некое количество небольших файлов подключаемых в основную программу в которых легче ориентироваться.
    Цитата Сообщение от ALKO Посмотреть сообщение
    Разбивка на модули нужна. А то на ctrl+F уже мозоли натëр.
    Ещë бы добавить флаг выбора рендеринга в виртуальный / реальный экран. Именно не перед компиляцией, а чтоб была такая возможность во время исполнения программы.
    + наличие spr_lib процедур было бы весьма кстати.
    возьму на карандаш

  10. #528
    Activist
    Регистрация
    10.01.2010
    Адрес
    Смоленская обл.
    Сообщений
    425
    Спасибо Благодарностей отдано 
    133
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    59 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dart Alver Посмотреть сообщение
    Вообще идеально было бы выделять области памяти которые будут обходить мимо процедуры и данные паскаля, но сомневаюсь что на данный момент это реально.
    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Это реально, достаточно придумать оператор Паскаля ORG address, который можно вставлять в любом месте Паскаля. Впрочем, можно его вставлять и внутри asm/endasm.
    Нет это немного другое, но то о чём я говорил это действительно малореально и чезчур геморно )) Смысл в выделении областей запрещенных для компиляции кодов/переменных паскаля. Т.е. транслятор при достижении адреса начала области ставит переход на адрес за её пределами. Проблема реализации такой фичи в том, что паскаль всего-лишь транслирует коды в ассемблер и если для трансляции паскалевских процедур ещё с грехом пополам можно использовать счетчик использованной памяти, хотя тоже повозится надо, то при ассемблерных вставках (тем более если ассемблер со своими изворотами) всё летит нафиг.
    Но ORG-шки для паскаля это тоже очень даже неплохая вещь.

    Ну если уж наглеть, то пока Andrew771 карандаш не положил )) Мысль насчёт того чтоб создать возможность обьявляя переменную/массив при необходимости задавать её/его физический адрес. Хотя может оно уже есть, только я не вкурил ?

  11. #529
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё одна рекомендация по дальнейшему апгрейду касаемо спрайтов - зеркальные спрайты указывать не отдельной ф-цией, а передавать в качестве флага одного из аргументов ф-ции.
    Почему так? Вот на данный момент мне на каждую фазу анимации надо выполнять проверку if dir = 1 then SpritePutClear () else SpritePutMirrorClear ()
    Код получается громоздким. Тогда как при передаче через аргумент достаточно SpritePutClear (...,1/0). Ну и такой подход обычно во всех адекватных SDK.

  12. #530
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Меня это тоже бесит на реальных проектах. Это первое, что я сделаю, как будет время - одна команда sprite для всех видов и типов спрайтов. А также думаю над единой адресацией всех спрайтов, чтобы не делать под каждый спрайт свою команду.

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

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

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

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

Ваши права

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