PDA

Просмотр полной версии : Планировщик ZX RTK Gen.2



Alex/AT
08.05.2013, 22:25
В связи с тремя работами и собственным проектом времени на 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

Дмитрий
08.05.2013, 22:43
Alex/AT, любопытно изучить сырки, спасибо

newart
08.05.2013, 22:56
Alex/AT, спасибо.

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

Alex/AT
08.05.2013, 23:03
Alex/AT, спасибо.
А как на счет остальных твоих наработок прошлых лет?
Надо будет старые диски пошерстить... правда там вменяемого не особо много :)

krt17
16.10.2018, 00:04
Захотелось ознакомится, но ссылка дохлая. Ни у кого не схоронено?

Alfishe
14.07.2020, 20:33
Захотелось ознакомится, но ссылка дохлая. Ни у кого не схоронено?

К счастью, сохранилось в недрах Wayback machine: http://web.archive.org/web/20141129222700/http://alex-at.ru/files/zxrtk2-alexat.rar

NEO SPECTRUMAN
14.07.2020, 21:51
К счастью, сохранилось в недрах Wayback machine:
ретрокомпьютинг катитсо в *****е гафно
последнее время я с этого вебархива не вылажу
все подохло...