AntKrotov / oberon-07-compiler

Oberon-07 compiler for x64 (Windows, Linux), x86 (Windows, Linux, KolibriOS), MSP430x{1,2}xx, STM32 Cortex-M3
BSD 2-Clause "Simplified" License
61 stars 5 forks source link

gorg64_spkplay и Оберон #26

Open galaxysite opened 4 months ago

galaxysite commented 4 months ago

Попробовал написать свой проигрыватель для стандартного динамика на Обероне. Декларации для типа Word нашёл, запись сделал, но дальше возникли одни вопросы как сделать ряд вещей. На самом деле плеер невелик по размеру кода, но по системной сложности выше обычного. Ему нужны ioperm, доступ к портам, системные вызовы, обработка сигналов. На доступе к портам уже не нашёл решения. Но может быть к этому не готов сам Оберон в текущей версии ? Или я чего-то не понял ?

https://github.com/galaxysite/gorg64_spkplay Здесь есть версии на Паскале, ассемблере и Си. Также есть весь органайзер с этим плеером: http://soft.self-made-free.ru/GORG64_166.tar.xz

Если же он реализуем на Обероне может быть включить его в качестве примера использования наряду с hello и animations. Явно этого не хватает. Сигналы, порты и системные вызовы нужны всегда.

AntKrotov commented 4 months ago

Теоретически, конечно, можно сделать, если это возможно на Паскале. Но это будет не очень просто. Я смотрю, в Паскале используются процедуры на асме, значит на Обероне придется писать соответствующие процедуры в маш. кодах. Для системных вызовов Linux есть процедура syscall в модуле LINAPI. Как использовать .so - библиотеки, можно посмотреть в том же "animation".

galaxysite commented 4 months ago

Ну да, я так и понял, что это не просто. В Си есть для этого outb, в Паскале написано на асме, в старых досовских Паскалях был некий массив ports. Трудно понять как это состыковывается с Обероном. Тогда попробую написать на первый случай вариант, работающий через системные вызовы и патч ядра. Спасибо за ответ !