Volkov: добавить Sprinter Commander

Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места.

Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
This commit is contained in:
2026-09-10 10:45:30 +03:00
parent 05bcd8197e
commit 8e389c03f8
870 changed files with 21310 additions and 25 deletions
+12 -5
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# make_hdd.sh [--dest DIR] OUT.chd FILE1 [FILE2 ...]
# make_hdd.sh [--dest DIR] OUT.chd FILE_OR_TREE1 [FILE_OR_TREE2 ...]
#
# Собирает 32 МБ RAW-образ жёсткого диска (MBR + один раздел FAT16) с
# указанными файлами и конвертит его в CHD для MAME (монтируется как -hard2).
@@ -15,6 +15,9 @@
# toolchain/make_hdd.sh out.chd prog.exe KID:kid0.atl GUARD:g0.atl ...
# — аргумент вида КАТАЛОГ:файл кладёт файл в подкаталог относительно
# DIR; без префикса файл идёт непосредственно в DIR.
# toolchain/make_hdd.sh out.chd prog.exe /tmp/test-tree
# — каталог копируется рекурсивно вместе со своим именем. Это заметно
# ускоряет сборку нагрузочных образов с сотнями мелких файлов.
set -e
DEST_DIR=${HDD_DEST_DIR:-}
@@ -118,9 +121,9 @@ echo "--- копирование файлов ---"
make_dir_tree "$DEST_DIR"
DEST_ROOT="z:${DEST_DIR:+/$DEST_DIR}"
# Аргумент может быть либо файлом (кладём в корень), либо парой
# КАТАЛОГ:файл — тогда каталог создаётся относительно DEST_ROOT и файл
# кладётся туда. Имена на Sprinter/DSS — 8.3.
# Аргумент может быть файлом, деревом каталогов либо парой КАТАЛОГ:файл.
# Дерево копируется рекурсивно вместе с именем своего корня. Имена на
# Sprinter/DSS — 8.3.
for f in "$@"; do
case "$f" in
*:*) dir="${f%%:*}"; src="${f#*:}"
@@ -129,7 +132,11 @@ for f in "$@"; do
# непрошедший вопрос mtools снова окажется невидимым.
make_dir_tree "$target_dir"
mt mcopy -o "$src" "z:/$target_dir/" ;;
*) mt mcopy -o "$f" "$DEST_ROOT/" ;;
*) if [ -d "$f" ]; then
mt mcopy -s -o "$f" "$DEST_ROOT/"
else
mt mcopy -o "$f" "$DEST_ROOT/"
fi ;;
esac
done