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

User Tag List

Показано с 1 по 4 из 4

Тема: Планировщик ZX RTK Gen.2

  1. #1
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Благодарностей: 18
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Планировщик ZX RTK Gen.2

    В связи с тремя работами и собственным проектом времени на Z80 нет совершенно, и весь фанатизм канул куда-то в лету.

    За прошлое время накопилось множество всякого интересного - например, кооперативно-многозадачный планировщик ZX RTK (RealTime Kernel) достиг ревизии 2 (Gen.2), но так и не был опубликован.

    В надежде, что кому-нибудь в конечном итоге пригодится - выкладываю под лицензией GPLv2 исходники планировщика, документации, и всех имеющихся наработок (примеров) к нему. Есть еще пара вещей, но их надо причесать, прежде чем выкладывать.

    Ссылка на архив: http://alex-at.ru/files/zxrtk2-alexat.rar

    ---

    Вкратце о том, что находится в архиве:

    - SJASMPlus включен в комплект. Новые версии не пробовал, но должны нормально компилить.

    - build_demo_* - быстрые батнички для компиляции демонстраций ZXRTK Gen.2
    Все демонстрации и так уже скомпилены, и лежат в виде .sna-файлов

    - Примеры есть следующие:

    *** worms - начатая, но так и брошенная триколорная версия ZX Worms. Работает вывод экрана, просмотр экрана, вывод статичных спрайтов червей, водичка-стрелочки, CS+SS переключает червя, черви ползают (без учета ландшафта), выводится курсор прицела, поползав, пробелом можно переключиться на следующую команду. Попрыгать-пострелять, увы, низя

    Модули: kernel/scheduler_g2.a80 - планировщик, всё остальное (многА) - в подкаталоге worms. Поскольку шансов доделать уже нет - исходники выкладываю целиком, вплоть до "сырых" исходных бинарников всякой графики и парсера к ним

    *** taskdemo / taskdemo_onlysync - самая простая для понимания демонстрация ZXRTK Gen.2

    Модули: demo/taskdemo.a80 / demo/taskdemo_onlysync.a80 и планировщик kernel/scheduler_g2.a80, для расчета MD5 используется модуль routines/md5.a80 либо md5_border.a80 (с раскраской бордера во время выполнения)

    В taskdemo бордюр раскрашивается каждой задачей, в taskdemo_onlysync - только специальными синхрозадачами.

    Собственно задач в коде - 5 (с разным приоритетом и разными функциями), синхрозадач - тоже 5 (все настроены на особые тайминги).

    Задачи Task55/TaskAA непрерывно XOR'ят область экрана #4800-#4FFF значениями #55 и #AA соответственно. Задача TaskFF непрерывно XOR'ит область экрана #5000-#57FF значением #FF. У всех этих задач разный приоритет.

    Задача MD5 считает силами Z80 MD5 от меняющейся (меняется только 1 символ) строки в 16 символов, и выводит его на экран по окончании расчёта. Задача Timer выводит на экран время, получаемое от ZXRTK.

    Синхрозадачи следующие: одна играет музыку, остальные - выводят на бордюр цветные линии. Тайминги в 16-тактовых единицах для синхрозадач подобраны по Pentagon'у, и выставлены так, чтобы первая белая полоса совпадала с началом видимого бордюра, вторая - с началом экрана, третья - с белой полосой посередке экрана, и четвертая - с красной полосой внизу экрана.

    Поскольку задачи не совсем точно возвращают ZXRTK время выполнения - совпадение синхрозадач по тактам примерное, но должно быть достаточно точным. Можете поиграться с набором задач - выключение (достаточно закомментить Add_Task) какой-либо (или всех) из них скажется на синхронизации не сильно.

    *** console4/6/8 - демонстрация работы с консолью с размером символов 4x8, 6x8 и 8x8 соответственно

    Модули: demo/console*.a80, kernel/scheduler_g2.a80, console/* - драйверы консоли, kernel/pagemgr-128k.a80 - драйвер переключения страниц 128K, modules/keyboard.a80 - драйвер клавиатуры

    Для 4x8 и 6x8 цвет - построчный. Для 8x8 - посимвольный. Переключение с английского на русский и назад - CS+SS.

    Что же до имеющихся реюзабельных модулей, то раскладка следующая:

    Ядро:

    kernel/scheduler_g2.a80 - планировщик, в kernel/taskschd.txt - кратенькое описание. В коде много комментов, плюс полная растактовка.
    kernel/pagemgr-128k.a80 - хук-драйвер для работы со страницами памяти 128K, сделать на его основе драйвер для любой архитектуры - легко и ненавязчиво

    Консоль - как использовать - смотрите в demo/console*.a80

    console/console-base.a80
    console/console-4x8.a80
    console/console-6x8.a80
    console/console-8x8.a80

    Клавиатура:

    modules/keyboard.a80

    Расчет MD5-хеша:

    routines/md5.a80
    Последний раз редактировалось Alex/AT; 08.05.2013 в 21:03.

  2. Эти 7 пользователя(ей) поблагодарили Alex/AT за это полезное сообщение:
    alone (10.05.2013), batr (13.05.2013), EARL (09.05.2013), GriV (10.05.2013), newart (08.05.2013), UEA (08.05.2013), Дмитрий (08.05.2013)

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

  4. #2
    Guru Аватар для Дмитрий
    Регистрация
    01.01.2009
    Адрес
    Донецк, Украина
    Сообщений
    3,234
    Благодарностей: 715
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alex/AT, любопытно изучить сырки, спасибо

  5. #3
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,947
    Благодарностей: 1520
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alex/AT, спасибо.

    А как на счет остальных твоих наработок прошлых лет?

  6. #4
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Благодарностей: 18
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от newart Посмотреть сообщение
    Alex/AT, спасибо.
    А как на счет остальных твоих наработок прошлых лет?
    Надо будет старые диски пошерстить... правда там вменяемого не особо много

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

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

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

Ваши права

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