Files
2026-06-14 02:27:37 +03:00

5.4 KiB
Raw Permalink Blame History

Схема соединений AtlasOS v2.0

Компоненты

Компонент Кол-во Назначение
MicroLua (IOC) 1 I/O Controller — терминал
MicroLua (CMC) 1 Command Controller — shell
MicroLua (MMC) 1 Memory/FS Controller — ФС
Terminal 1 текстовый дисплей
Memory 1 хранилище 8192 символа

Распиновка и соединения

IOC — I/O Controller

in[1]  ← Terminal (текстовый ввод)
in[2]  ← CMC.out[1] (текст "OUT|...")
in[3]  ← CMC.out[2] (очистка, 1)
in[4]  ← CMC.out[3] (цвет "R,G,B")
out[1] → Terminal (текст на экран)
out[2] → Terminal (очистка)
out[3] → Terminal (цвет "R,G,B")
out[4] → CMC.in[1] (команда "IN|...")

CMC — Command Controller

in[1]  ← IOC.out[4] (команда "IN|...")
in[2]  ← MMC.out[1] (ответ ФС "OK|seq|..." / "ERR|seq|...")
out[1] → IOC.in[2] (текст "OUT|...")
out[2] → IOC.in[3] (очистка, 1)
out[3] → IOC.in[4] (цвет "R,G,B")
out[4] → MMC.in[1] (запрос ФС "OP|...")

MMC — Memory/FS Controller

in[1]  ← CMC.out[4] (запрос ФС "OP|...")
in[3]  ← Memory.out[1] (чтение данных)
out[1] → CMC.in[2] (ответ ФС "OK|seq|..." / "ERR|seq|...")
out[5] → Memory.in[1] (запись данных)
out[6] → Memory.in[2] (сигнал записи, 1)

Memory

in[1]  ← MMC.out[5] (данные для записи)
in[2]  ← MMC.out[6] (сигнал записи, 1)
out[1] → MMC.in[3] (хранимое значение)

Формат вывода терминала

Терминал: 72 символа × 17 строк.

Вывод строится очередью — одна строка за кадр. Приглашение ввода:

root /path$ команда_пользователя
<результат команды>

Ошибки отображаются красным цветом. Свободная память — status.

Протокол шины

IOC → CMC (CMD)

IN|команда_и_аргументы

Пример: IN|ls /home, IN|cat readme.txt

CMC → IOC (три отдельных пина)

out[1] — текст: OUT|текст out[2] — очистка: 1 out[3] — цвет: R,G,B

Контроллер IOC разбирает эти три пина независимо.

CMC → MMC (MEM — запросы)

Опкод Формат Описание
LS `LS путь`
READ `READ путь
STAT `STAT путь`
CHDIR `CHDIR путь`
STATFS STATFS статистика памяти: total|used
WRITE `WRITE путь

MMC → CMC (MEM — ответы)

Успех: OK|seq|данные Ошибка: ERR|seq|код

Коды: ENOENT, EACCES, ENOTDIR, EISDIR, EROFS, EINVAL

Поле seq — монотонный счётчик (позволяет CMC отличить новый ответ от старого).

Команды CMC

Команда Аргументы Описание
help список команд
echo текст вывести текст
clear очистить экран
color R G B установить цвет (0-255)
status система + свободная память
ls [-a] [путь] список файлов; -a включая . и ..
cat путь содержимое файла
cd [путь] сменить каталог; без аргумента → /
stat путь метаданные файла/каталога

Пути могут быть абсолютные (/home/file.txt) или относительные (file.txt — относительно cwd).

Последовательность запуска

  1. Загрузить код MMC.lua → старт, чтение Memory; если пусто — инициализация ФС по умолчанию
  2. Загрузить код CMC.lua → старт, ожидание команд
  3. Загрузить код IOC.lua → старт, ожидание ввода
  4. Соединить провода по схеме
  5. Ввод с клавиатуры → отобразится приглашение root />

Пример сессии

root /> help
AtlasOS v2.0:
  help  This help
  echo  Echo text
  clear  Clear screen
  color  Set color R G B
  status  System status
  ls  List directory [path]
  cat  Show file content
  cd  Change directory [path]
  stat  Show file metadata
root /> status
AtlasOS v2.0  User: root(0)
CWD: /
Mem: 7900/8192 free
root /> cat /home/captain/readme.txt
Welcome to AtlasOS v2.0!
root /> cd /home/captain
/home/captain
root /home/captain$ ls
readme.txt
root /home/captain$ color 0 255 128
Color set to 0,255,128
root /home/captain$ cat nonexistent
nonexistent: No such file or directory   (красным)
root /> unknown
Unknown: unknown. Try 'help'.   (красным)