Zorko wrote: 29 Apr 2021, 15:39
Ну хочешь давай твой документ приложим к среде. Ты там вроде собрался всё описать для XP и 7.
Ну это все таки твоя разработка, и моё "хочешь/не хочешь" там не к чему!
Решай сам!
Я вот описание установки проверю, опубликую, ну а дальше пусть хто что хочеш с ним то и делает или не делает!
Ну а далее как я говорил, создам тему "Учимся писать на Оберон" и буду всякую всячину проб своих публиковать! А насчёт использовать это куда-то - каждый пусть тоже на своё усмотрение делает или не делает!
Last edited by als on 29 Apr 2021, 16:36, edited 1 time in total.
DemoLvov.lvt я запускал!
Насчёт завершения програм и выхода в (куда-то)...
Ну так как пример, выхода то (куда-то) там никакого нет! ПРАВИЛЬНО!
Хотя я смотрю, что и HLT нету да и цикла...
концовка в файле DemoLvov.lvt - вот такая как я вижу з декомпилированного
JMP($F82A);
$F82A - это помоему вывод точки на экран...
т.е. согласно исходника там тоже последнее
Lvov.PAINT(130, 30, 2, 3);
Зорко,
создал тему
"Учимся писать на Обероне"
если что, то буду там ТЕБЕ вопросы задавать, чтобы как говорится было все в одном месте! Да и тут все таки тема для твоих вопросов!
Если есть, что комментировать там в теме или добавлять, смело добавляй и комментируй! viewtopic.php?f=8&t=396&p=5378#p5379 ХОРОШО ?
Не всегда удобно на англ переключаться и писать к тебе "ZORKO", я буду это делать и по рус "ЗОРКО".. ХОРОШО ?
viewtopic.php?f=20&t=395&p=5389#p5389
Зорко,
описание моего способа установки, тебе в документацию НЕ ГОДИТСЯ!
так как, там указано что файл XDev.7z нужно скачать с форума.
В котором уже K580Dev. Вообщем, захочешь скачаешь, рассмотришь!
als wrote: 29 Apr 2021, 15:47?!?!?!
Погодь.
Мы будто бы на разных языках разговариваем...
C:\XDev\
C:\z88dk\
я то все установил! еще вчера!
Далее скачал вот это https://github.com/Oleg-N-Cher/K580Dev с демонстрацией ПК-01 и что далее ?
Запустить XDevLite.exe, выбрать Files -> Open -> K580Dev/Mod/*.*
Открыть нужный модуль и нажать F12 - сборка и запуск в эмуляторе, ассоциированном с форматом .lvt
Библиотечные модули из K580Dev/Lib/Mod/*.* пересобираются тоже по F12. Только там интерфейсы отдельно (в Lib/Mod), их реализации - отдельно (в Lib/C).
als wrote: 29 Apr 2021, 15:53копировать в C:\XDev\K580Dev\
? Поверх ? или оно там одно другому не мешает ?
Можно поверх. Не мешает. Можно вместо.
Там тонкостей миллион. Я не в силах их все описать в доках. Увы.
Но много тонкостей касаются не только Оберона, а вообще всего тандема, включая zcc, особенности платформ и т.д.
als wrote: 29 Apr 2021, 16:12концовка в файле DemoLvov.lvt - вот такая как я вижу з декомпилированного
JMP($F82A);
$F82A - это помоему вывод точки на экран...
Не. Это точка выхода в Монитор Радио-86РК. Остался рудиментом и лезет из K580Dev/Bin/z88dk/lib/target/rk86, сделанного Kakos Nonos'ом. Не исключено, что его придётся переделывать - либо на HLT, либо просто прописать обязательным зацикливать любую программу в конце специальной командой. Что, кстати, обычная практика при разработке для игровых приставок NES и SegaMD, например.
Насчёт клавиатуры я тебе писал, про несколько клавиш... вспомнил!
Теперь еще думаю важный момент.
Должна быть реализована процедура задержки ПРИЧЁМ КОМАНДАМИ РОДНОЙ МАШИНЫ.
Понимаешь, пустые циклы компилятора считаю ненадежными! Да и сам компилятор, может чёрт знает как компилировать в данный какой-то момент компиляции те пустые циклы. Даже если это не так, компилятор компилирует надёжно одинаково.... ну ты ж не будешь гарантировать за разработчиков как они эффективность блоков цикла могут поменять в новых версиях. И в результате, компилируя обновлённым "пустые" циклы задержки могут не соответствовать по времени с бывшим (не обновлённым) компилятором! Как-то так.
Короче, считаю что процедура задержки писанная в родной машине, надёжнее!
Вот прошу реализовать вот такое. Причём ДВЕ для байта и ворда
Первая очень "нежная" вторая более "грубее"
рег A - число задержки
Procedure DelayLV1; {Задержка LV}
j81C1: DCX A
JNZ j81C1
RET;
end;
DE - число задержки
Procedure DelayLV2; {Задержка LV}
j81C1: DCX D
MOV A,D
ORA E
JNZ j81C1
RET;
end;
Ну может что получше есть.... или придумаешь, не знаю... но помоему тут уж лучше придумывать то нечего
als wrote: 01 May 2021, 22:30
Насчёт клавиатуры я тебе писал, про несколько клавиш... вспомнил!
Теперь еще думаю важный момент.
Должна быть реализована процедура задержки ПРИЧЁМ КОМАНДАМИ РОДНОЙ МАШИНЫ.
Согласен. В идеале хорошо бы иметь несколько подпрограмм задержки. С точки зрения удобства прикладника лучше иметь процедуру задержки на указанное количество миллисекунд, а не каких-то абстрактных машинных тактов или тиков таймера. Но с учётом специфики платформы можно пока и так. Я добавил новый модуль Timer, который логически отнёс к стандартной библиотеке XDev. Тела реализации подпрограмм взял твои.
Побольше используй беззнаковый тип SYSTEM.BYTE вместо знакового INT8. Он эффективнее компилится в код 8080. Вот я немного поигрался с типами и .lvt твоей демки неплохо так уменьшился.
Zorko wrote: 02 May 2021, 00:12
лучше иметь процедуру задержки на указанное количество миллисекунд,
Я думаю, что это все заморочливо и все равно не точным (не идеальным) будет!
Особо не парься над таким...
Zorko wrote: 02 May 2021, 00:12
а не каких-то абстрактных машинных тактов или тиков таймера. Но с учётом специфики платформы можно пока и так.
Для игрушек достаточно чтобы было хороший диапазон т.е. 0..65535 как во второй процедуре, а подбирается задержка в игрушках все равно так сказать "на глаз".
Тот диапазон втрой процедуры помоему 65535 - около 2 сек. короче есть выбор! И даже лучше чем милисикунды получается.
Zorko wrote: 02 May 2021, 00:12
Я добавил новый модуль Timer, который логически отнёс к стандартной библиотеке XDev. Тела реализации подпрограмм взял твои.
Спасибо!
Я там новые пробы тест5 выложу сейчас - называются - без спрайтов аж никак!
Zorko wrote: 02 May 2021, 00:12
Побольше используй беззнаковый тип SYSTEM.BYTE вместо знакового INT8. Он эффективнее компилится в код 8080. Вот я немного поигрался с типами и .lvt твоей демки неплохо так уменьшился.
Слушай, а вот SYSTEM.BYTE у меня беда... не получается что-то. Я уж не стал тебя лишний раз "домахивать" потому что ты объяснял. А не мог бы ты опубликвать код рабочий из моих проб любых заменить на SYSTEM.BYTE там все ?