# Схема соединений 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 символа | ## Полная схема ``` Терминал (Keyboard/Button) Терминал (Display) │ text ▲ ▼ │ text ┌──────────┐ ┌──────────┐ │ clear │ │─────────▶ │──────┤ color │ IOC │ IN|cmd │ CMC │ │ │ │◀────────│ │◀─────┤ └──────────┘ OUT|text│ │ 1 │ ▲ clear=1 │ │◀─────┤ │ R,G,B └────▲────┘ R,G,B│ │ │ │ │ LS|path │ │ READ|... │ │ │ │ │ ┌────▼────┐ │ │ │ │ │ │ │ MMC │ │ │ │ │ │ │ └──┬──┬───┘ │ │ │ │ │ │ data │ │ write(1) │ │ ▼ ▼ │ │ ┌────────┐ │ │ │ Memory │ │ │ │ 8192 │ │ │ └───┬────┘ │ │ │ │ └──────────────────┴────────────┘ ``` ## Соединения проводом ### IOC ↔ Терминал | Пин IOC | → / ← | Пин Terminal | Назначение | |---|---|---|---| | IOC.out[1] | → | Display.in (text) | текст на экран | | IOC.out[2] | → | Display.in (clear) | очистка (1) | | IOC.out[3] | → | Display.in (color) | цвет R,G,B | | IOC.in[1] | ← | Keyboard.out (text) | ввод пользователя | ### IOC ↔ CMC | Пин IOC | → / ← | Пин CMC | Назначение | |---|---|---|---| | IOC.out[4] | → | CMC.in[1] | команда `IN|cmd` | | CMC.out[1] | → | IOC.in[2] | текст `OUT|text` | | CMC.out[2] | → | IOC.in[3] | очистка (1) | | CMC.out[3] | → | IOC.in[4] | цвет `R,G,B` | ### CMC ↔ MMC | Пин CMC | → / ← | Пин MMC | Назначение | |---|---|---|---| | CMC.out[4] | → | MMC.in[1] | запрос `OP|args` | | MMC.out[1] | → | CMC.in[2] | ответ `OK|seq|...` | ### MMC ↔ Memory | Пин MMC | → / ← | Пин Memory | Назначение | |---|---|---|---| | MMC.out[5] | → | Memory.in[1] | данные для записи | | MMC.out[6] | → | Memory.in[2] | сигнал записи (1) | | Memory.out[1] | → | MMC.in[3] | чтение данных | ## Протокол шины ### IOC → CMC (CMD) ``` IN|команда ``` ### CMC → IOC (CMD) ``` OUT|текст — вывести текст 1 на out[2] — очистить экран R,G,B на out[3] — установить цвет ``` ### CMC → MMC (MEM) ``` STAT|путь — метаданные READ|путь|смещение|длина — чтение файла LS|путь — список каталога CHDIR|путь — смена директории (проверка) WRITE|путь|смещение|данные — запись (пока EROFS) ``` ### MMC → CMC (MEM) ``` OK|seq|данные ERR|seq|код_ошибки ``` Коды ошибок: `ENOENT`, `EACCES`, `ENOTDIR`, `EISDIR`, `EROFS`, `EINVAL` ## Последовательность запуска 1. Загрузить код MMC.lua в контроллер MMC 2. Загрузить код CMC.lua в контроллер CMC 3. Загрузить код IOC.lua в контроллер IOC 4. Соединить провода по схеме выше 5. При первом запуске MMC инициализирует пустую ФС и запишет в Memory 6. Подать сигнал на Terminal — появится приглашение ## Пример сессии ``` > ls home etc > ls /home/captain readme.txt > cat /home/captain/readme.txt Welcome to AtlasOS v2.0! > cd /home/captain /home/captain > status AtlasOS v2.0 | User: root(0) | CWD: /home/captain > color 0 255 128 Color set to 0,255,128 > help AtlasOS v2.0 commands: help Show 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 ```