можно получить домашнее задание? где почитать про командыВГ?
можно получить домашнее задание? где почитать про командыВГ?
Pentagon-128/AY/FDD; Leningrad-48/128; Гамма-48 ред1; Искра- 1080; Искра-1085;
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
При наличии аппаратной реализации принципа "любая страница в любом окне" нужно планировать под память пользователя (программы/процесса) все 64к адресного пространства. Ядро держать в "теневой" странице и подключать только на время обращения к его функциям. Разница между 32к/64к для процесса критична в том, что в 64к уже достаточно большой простор для длинномерного компилированного С-кода, а в 32к на C разве что только "hello world" запускать.
Последний раз редактировалось Error404; 29.01.2010 в 16:56.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Хорошо, что я об этом не знал и писал на С программки для 8кбайтовых контроллеров
На самом деле - современные компиляторы С оптимизируют код хорошо. Сам ты его соптимизируешь ну щё процентов на несколько - не больше.
---------- Post added at 07:35 ---------- Previous post was at 07:32 ----------
А! так тебе обязательно НАТИВНО работающий? тады ой.
в принципе, для скорости написания проще использовать кросс-средства.
нативных оптимизирующих компиляторов С для Z80 не знаю.
Но согласись что это были довольно простые по логике програмки, далеко не ROM от спектрума и не типичная спектрум игрушка типа exolon. Как показывает практика то длинна кода и скорость при использовании ЯВУ падает в среднем в 3...4 раза так что надо памяти хотябы 256Кб а лучше 512кб частоту не 3Mhz а 20Mhz! И при этом желательно чтоб память была прямоадресуемая без всяких страниц и сегментов (типичный m68000 или mos65816).
ну это зависит от того, как писать, да и от компилятора сильно зависит
если не пользоваться 32х битной арифметикой, вычислениями с плавающей точкой и прочим, чего в процессоре нет, то работать будет быстро, а занимать мало
си - это же, как говорится, ассемблер высокого уровня.. я, например, не представляю, почему Hello, world на си может получиться значительно больше по объему, чем на асме
эксолон-не эксолон, а какой-нибудь maziacs (не менее типичная zx-игра) умять в 32 килобайта компиленного сишного кода вполне реально
Это где такая "практика" ? Давай говорить не о "яву", а о языке С, например. О современных компиляторах, а не о поделках 20-летней давности.
1. Скорость. Для того, чтобы алгоритм был "в 3-4" раза медленне, чем на асме - надо ОООЧЕНЬ постараться. Отключить полностью оптимизацию, писать как попало. Есть, конечно, исключения, но кто мешает сделать ассемблерную вставку ? Как правило, критическая часть кода занимает не более нескольких десятков комманд ассемблера.
Как правило, проигрыш в скорости - проценты. Никак не 3-4 раза.
2. Объём. Язык С позволяет разместить данные не менее плотно, чем ассемблер. Только удобств куда как больше.
3. Скорость разработки. Тут асм явно в проигрыше.
ИТОГ.
Проект лучше делать на С, а потом критические места - переписывать на асме.
Конечно, если программа - расчитана до такта, как некоторые демы - то тут всё на асме пишеться.
Но в свете написания ОС могу сказать, что тут про асм лучше забыть и не вспоминать без крайней нужды. Писал для ARM7 многозадачку потоковую. ядро заняло всего несколько килобайт.А для АРМ7 куда как более жирный, чем для Z80 получается. В ядро вошли - переключатель задач, менеджер памяти (куча), рудиментарная файловая система (для обращения к устройствам), куча сервисных функций.
Ассемблер использовал только для запуска процессора (расставить все стеки, запустить тактовый генератор) - и всё.
Моя программка на С для AT8535 (память команд - 8К, т.е. 4096 команд) была не "Эхолон".. Это да..
В реалтайме обрабатывала информацию с 30 датчиков и управляла 15 двигателями. Плюс к этому - держала интерфейс пользователя на 7-сегментных индикаторах.
Как думаешь - что сложнее - обработать 5 кнопок ввода пользователем в эхолоне или 30 датчиков? Я уж не говорю про то, что зависание эхолона - никакого вреда, кроме мата пользователя не принесёт.. Чего не скажешь о зависании программы управления очисткой воды, которую я писал...
В принципе вся "сложность" в игре типа эхолон - это скорость перестроения экрана. А никак не логика.
---------- Post added at 01:00 ---------- Previous post was at 00:47 ----------
По-моему вы не с того начали.
Драйвера - это всё хорошо, но! Есоли пишите ОС, то, ИМХО, вначале ответьте на такие вопросы:
1. Как ОС будет взаимодействовать с ПО пользователя. То есть "механизм системных вызовов". Механизм должен быть единым для всех программ, пригодным для любого клона, на котором планируется запуск ОС.
2. Как будет происходить переключение задач. Тип многозадачности, события, переключающие задачи, механизм переключения задач.
3. Как будет органиована совместимость с ПО, не поддерживающим данную ОС (старые программы, игрухи и проч.)
4. Как будет выделяться память. Скажем, учитывая архитектуру спека, можно ограничить максимальный объём памяти, выделяемой за раз - 16К.
5. Список основных системных вызовов. Их функции.
ИМХО, когда ответите на все эти вопросы - только тогда можно браться за написание программы. Иначе - получится нечто кривонесовместимое и непонятноработающее.
Я конечно немного утрирую, но по моему опыту, любая более-менее интересная программа (это обычно 1000-2000 строк) у меня получается порядка 36-40к только кода (а ведь нужна еще и куча, и стек). Использую Hitech-C для CPM - пожалуй единственный 32-битный ANSI C для Z80, работающий нативно на Z80 (в отличие от SDCC, IAR и прочего для PC)
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Про команды ВГ-93 можно прочитать в книге "ZX-SPECTRUM и TR-DOS для пользователей и программистов". Она есть на сайте Virtual TR-DOS
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)