Счастливый пользователь преобрел красивую коробку в магазине. Принес домой, вытащил плату, компакт-диск, толстую книгу... И решил из этого сделать охранную сигнализацию.
Каждая программа компилируется отдельно, загружается отдельно (на совести пользователя в кого куда). Запуск, останов, удаление программы по желанию.
Из того,что программа может находиться по любому адресу, компилятор должен использовать только относительную адресацию для переходов внутри программы. Для вызовов функций, реализованных в ОС - только абсолютная.
программа №1:
main()
{
char s[20];
time t;
_output(4,0); // Сирена
for(;;)
if( _input(1) && _input(3) ) // разбитое окно и в режиме охраны
{
_output(4,1);
t = _GetTime(); _TimeToString(t,s);
_fopen(2); _fprintf(2,s); _fclose(2);
_printf("%s Window die\n",s);
}
}
программа №2:
main()
{
char s[20];
time t;
_output(4,0);
for(;;)
if( _input(2) ) // открытая дверь
{
t0 = _GetTime();
_delay( 40 );
if( _input(3) == 0 ) // выключатель снятия с охраны
{
_output(4,1);
t = _GetTime(); _TimeToString(t,s);
_fopen(5); _fprintf(5,s); _fclose(5);
_printf("%s Door open\n",s);
}
}
}
программа №3: Обмен с вышестоящей системой
main()
{
char s[20];
int n;
for(;;)
{
gets(s);
if( _strcmp(s,"ask") )
{
_fopen(2); _fgets(2,s); _printf("%s\n",s); _fclose(2);
_fopen(5); _fgets(5,s); _printf("%s\n",s); _fclose(5);
}
}
}
Все функции с подчеркиванием - системные.
Для _fopen(5) при компиляции в код добавляются пара команд CPU: mov Rх,5 и CALL 0345.
В результате пользователь может не знаеть какой внутри процессор (жирная клякса на плате).
Перевод с исходника в машинные коды - проблемы компилятора.
Реализованы _fopen/_fclose, fprintf/fscanf... пожалуйста файловая система.
Команды устройству "почти в терминах пользователя"
Загрузка и выгрузка программ.
Если пользователь захочет поменять код ОС (первые 1000 слов), то назовет его хакером.
Цитата(MrYuran @ May 22 2008, 11:12)

Да... 100 байт на программу пользователя... вы видимо действительно мыслите в категориях МК-51...
И упорно рассматриваете только один аспект применения ОС (причём необязательный) - это HMI (или хуман-машин интерфейс).
Количество взял с потолка. 100 слов (не байт). Процессор может быть любой разрядности.
Да и железо+программы изобретаются на благо человека, а не Шварцнегера со стеклянным глазом.
Через год-два пользователь придет к железяке, хоть пыль протереть.
Просто, хочу сказать, чтобы называться ОС, нужно реализовать все. Если чего нет, то это будет программа контроллера. Если требуется специальное устройство(программатор), то это тоже не ОС.