5.4 KiB
5.4 KiB
Схема соединений 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).
Последовательность запуска
- Загрузить код MMC.lua → старт, чтение Memory; если пусто — инициализация ФС по умолчанию
- Загрузить код CMC.lua → старт, ожидание команд
- Загрузить код IOC.lua → старт, ожидание ввода
- Соединить провода по схеме
- Ввод с клавиатуры → отобразится приглашение
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'. (красным)