English | Français | Deutsch | Español | Italiano | Português | Nederlands | Dansk | Norsk | Svenska | Suomi | Íslenska | Ελληνικά | Türkçe | Polski | Čeština | Slovenčina | Slovenščina | Hrvatski | Magyar | Românã | Български | Shqip | Eesti | Latviešu | Lietuvių | Македонски | Crnogorski | Русский | Українська | 日本語 | 中文 | 한국어 | हिन्दी
⚠️ ДОКАЗАТЕЛСТВО НА КОНЦЕПЦИЯ - Това е експериментална, образователна реимплементация на Apple Macintosh System 7. Това НЕ Е завършен продукт и не трябва да се счита за софтуер, готов за производствена употреба.
Реимплементация с отворен код на Apple Macintosh System 7 за съвременен x86 хардуер, стартираща чрез GRUB2/Multiboot2. Този проект цели да пресъздаде класическото Mac OS изживяване, като същевременно документира архитектурата на System 7 чрез анализ на обратно инженерство.
Текущо състояние: Активна разработка с ~94% завършена основна функционалност
- Оптимизирана MIDI конверсия: Споделена помощна функция
SndMidiNoteToFreq()с таблица за справка от 37 записа (C3-B5) и резервен вариант на базата на октави за пълен MIDI диапазон (0-127) - Поддръжка на асинхронно възпроизвеждане: Пълна инфраструктура за обратни извиквания както за възпроизвеждане на файлове (
FilePlayCompletionUPP), така и за изпълнение на команди (SndCallBackProcPtr) - Аудио маршрутизация на базата на канали: Многостепенна система с приоритети с контроли за заглушаване и активиране
- 4-степенни приоритетни канали (0-3) за маршрутизация на хардуерния изход
- Независими контроли за заглушаване и активиране за всеки канал
SndGetActiveChannel()връща канала с най-висок приоритет- Правилна инициализация на каналите с активиран флаг по подразбиране
- Реализация с производствено качество: Целият код се компилира чисто, не са открити нарушения на malloc/free
- Комити: 07542c5 (MIDI оптимизация), 1854fe6 (асинхронни обратни извиквания), a3433c6 (маршрутизация на канали)
- ✅ Фаза на разширени функции: Цикъл за обработка на команди на Sound Manager, сериализация на стилове за множество изпълнения, разширени MIDI/синтез функции
- ✅ Система за преоразмеряване на прозорци: Интерактивно преоразмеряване с правилна обработка на хром елементите, поле за разтягане и почистване на работния плот
- ✅ Транслация на PS/2 клавиатура: Пълно съпоставяне на скенкодове от набор 1 към ключови кодове на Toolbox
- ✅ Многоплатформен HAL: Поддръжка на x86, ARM и PowerPC с чиста абстракция
Обща основна функционалност: ~94% завършена (приблизителна оценка)
- Слой за хардуерна абстракция (HAL): Пълна платформена абстракция за x86/ARM/PowerPC
- Система за стартиране: Успешно стартира чрез GRUB2/Multiboot2 на x86
- Серийно журналиране: Модулно журналиране с филтриране по време на изпълнение (Error/Warn/Info/Debug/Trace)
- Графична основа: VESA фреймбуфер (800x600x32) с QuickDraw примитиви, включително XOR режим
- Изобразяване на работния плот: Лента с менюта на System 7 с дъгово лого на Apple, икони и шарки на работния плот
- Типография: Растерен шрифт Chicago с перфектно пикселно изобразяване и правилен кърнинг, разширен Mac Roman (0x80-0xFF) за европейски акцентирани символи
- Интернационализация (i18n): Локализация на базата на ресурси с 34 езика (английски, френски, немски, испански, италиански, португалски, нидерландски, датски, норвежки, шведски, фински, исландски, гръцки, турски, полски, чешки, словашки, словенски, хърватски, унгарски, румънски, български, албански, естонски, латвийски, литовски, македонски, черногорски, руски, украински, японски, китайски, корейски, хинди), Locale Manager с избор на език при стартиране, CJK инфраструктура за многобайтово кодиране
- Font Manager: Поддръжка на множество размери (9-24pt), синтез на стилове, парсване на FOND/NFNT, LRU кеширане
- Входна система: PS/2 клавиатура и мишка с пълно препращане на събития
- Event Manager: Кооперативна многозадачност чрез WaitNextEvent с унифицирана опашка за събития
- Memory Manager: Разпределение на базата на зони с интеграция на 68K интерпретатор
- Menu Manager: Пълни падащи менюта с проследяване на мишката и SaveBits/RestoreBits
- Файлова система: HFS с реализация на B-дърво, прозорци за папки с VFS изброяване
- Window Manager: Преместване, преоразмеряване (с поле за разтягане), наслояване, активиране
- Time Manager: Точно TSC калибриране, микросекундна прецизност, проверка на генерация
- Resource Manager: Двоично търсене O(log n), LRU кеш, изчерпателна валидация
- Gestalt Manager: Системна информация за множество архитектури с разпознаване на архитектурата
- TextEdit Manager: Пълно редактиране на текст с интеграция на клипборд
- Scrap Manager: Класически Mac OS клипборд с поддръжка на множество формати
- Приложение SimpleText: Пълнофункционален MDI текстов редактор с изрязване/копиране/поставяне
- List Manager: Контроли за списъци, съвместими със System 7.1, с клавиатурна навигация
- Control Manager: Стандартни контроли и ленти за превъртане с CDEF реализация
- Dialog Manager: Клавиатурна навигация, пръстени за фокус, клавишни комбинации
- Segment Loader: Преносима ISA-агностична система за зареждане на 68K сегменти с преместване
- M68K интерпретатор: Пълно диспечиране на инструкции с 84 обработчика на опкодове, всички 14 режима за адресиране, рамка за изключения/прекъсвания
- Sound Manager: Обработка на команди, MIDI конверсия, управление на канали, обратни извиквания
- Device Manager: DCE управление, инсталиране/премахване на драйвери и I/O операции
- Стартов екран: Пълен потребителски интерфейс за стартиране с проследяване на напредъка, управление на фази и начален екран
- Color Manager: Управление на състоянието на цветовете с QuickDraw интеграция
- Интеграция на приложения: M68K интерпретаторът и Segment Loader са завършени; необходимо е интеграционно тестване за проверка дали реалните приложения се изпълняват
- Процедури за дефиниция на прозорци (WDEF): Основната структура е налична, частично диспечиране
- Speech Manager: Само рамка на API и аудио преминаване; двигателят за синтез на реч не е реализиран
- Обработка на изключения (RTE): Връщане от изключение е частично реализирано (в момента спира вместо да възстанови контекста)
- Печат: Няма система за печат
- Мрежи: Няма AppleTalk или мрежова функционалност
- Настолни аксесоари: Само рамка
- Разширено аудио: Възпроизвеждане на семпли, миксиране (ограничение на PC Speaker)
Следните имат изходен код, но не са интегрирани в ядрото:
- AppleEventManager (8 файла): Междуприложна комуникация; умишлено изключен поради зависимости от pthread, несъвместими със самостоятелната среда
- FontResources (само заглавен файл): Дефиниции на типове ресурси за шрифтове; действителната поддръжка на шрифтове се осигурява от компилирания FontResourceLoader.c
- Архитектура: Множество архитектури чрез HAL (x86, ARM, PowerPC готови)
- Протокол за стартиране: Multiboot2 (x86), специфични за платформата зареждачи
- Графика: VESA фреймбуфер, 800x600 @ 32-битов цвят
- Схема на паметта: Ядрото се зарежда на физически адрес 1MB (x86)
- Времеви отчети: Архитектурно-агностични с микросекундна прецизност (RDTSC/таймерни регистри)
- Производителност: Пропуск в кеша на ресурси <15µs, попадение в кеша <2µs, отклонение на таймера <100ppm
- 225+ изходни файла с ~57 500+ реда код
- 145+ заглавни файла в 28+ подсистеми
- 69 типа ресурси, извлечени от System 7.1
- Време за компилация: 3-5 секунди на съвременен хардуер
- Размер на ядрото: ~4,16 MB
- Размер на ISO: ~12,5 MB
- GCC с 32-битова поддръжка (
gcc-multilibна 64-битови системи) - GNU Make
- GRUB инструменти:
grub-mkrescue(отgrub2-commonилиgrub-pc-bin) - QEMU за тестване (
qemu-system-i386) - Python 3 за обработка на ресурси
- xxd за двоично конвертиране
- (По избор) powerpc-linux-gnu кръстосан инструментариум за PowerPC компилации
sudo apt-get install build-essential gcc-multilib grub-pc-bin xorriso qemu-system-x86 python3 vim-common# Компилиране на ядрото (x86 по подразбиране)
make
# Компилиране за конкретна платформа
make PLATFORM=x86
make PLATFORM=arm # изисква ARM bare-metal GCC
make PLATFORM=ppc # експериментално; изисква PowerPC ELF инструментариум
# Създаване на стартиращо ISO
make iso
# Компилиране с всички езици
make LOCALE_FR=1 LOCALE_DE=1 LOCALE_ES=1 LOCALE_JA=1 LOCALE_ZH=1 LOCALE_KO=1 LOCALE_RU=1 LOCALE_UK=1 LOCALE_PL=1 LOCALE_CS=1 LOCALE_SQ=1 LOCALE_BG=1 LOCALE_HR=1 LOCALE_DA=1 LOCALE_NL=1 LOCALE_ET=1 LOCALE_FI=1 LOCALE_EL=1 LOCALE_HU=1 LOCALE_IS=1 LOCALE_IT=1 LOCALE_LV=1 LOCALE_LT=1 LOCALE_MK=1 LOCALE_ME=1 LOCALE_NO=1 LOCALE_PT=1 LOCALE_RO=1 LOCALE_SK=1 LOCALE_SL=1 LOCALE_SV=1 LOCALE_TR=1 LOCALE_HI=1
# Компилиране с един допълнителен език
make LOCALE_FR=1
# Компилиране и стартиране в QEMU
make run
# Почистване на артефактите
make clean
# Показване на статистика за компилацията
make info# Стандартно стартиране със серийно журналиране
make run
# Ръчно с опции
qemu-system-i386 -cdrom system71.iso -serial file:/tmp/serial.log -display sdl -vga std -m 256M# С конзолен сериен изход
qemu-system-i386 -cdrom system71.iso -serial stdio -display sdl -m 256M
# Без графичен интерфейс
qemu-system-i386 -cdrom system71.iso -serial stdio -display none -m 256M
# С GDB отстраняване на грешки
make debug
# В друг терминал: gdb kernel.elf -ex "target remote :1234"- Control Manager:
docs/components/ControlManager/ - Dialog Manager:
docs/components/DialogManager/ - Font Manager:
docs/components/FontManager/ - Серийно журналиране:
docs/components/System/ - Event Manager:
docs/components/EventManager.md - Menu Manager:
docs/components/MenuManager.md - Window Manager:
docs/components/WindowManager.md - Resource Manager:
docs/components/ResourceManager.md
- Locale Manager:
include/LocaleManager/— превключване на локал по време на изпълнение, избор на език при стартиране - Ресурси за низове:
resources/strings/— STR# ресурсни файлове за всеки език (34 езика) - Разширени шрифтове:
include/chicago_font_extended.h— Mac Roman 0x80-0xFF глифове за европейски символи - CJK поддръжка:
include/TextEncoding/CJKEncoding.h,include/FontManager/CJKFont.h— многобайтово кодиране и шрифтова инфраструктура
- IMPLEMENTATION_PRIORITIES.md: Планирана работа и проследяване на пълнотата
- IMPLEMENTATION_STATUS_AUDIT.md: Подробен одит на всички подсистеми
Археологически подход с реализация, основана на доказателства:
- Подкрепен от документацията Inside Macintosh и MPW Universal Interfaces
- Всички основни решения са маркирани с Finding ID, препращащи към подкрепящи доказателства
- Цел: поведенческа еквивалентност с оригиналния System 7, а не модернизация
- Реализация в чиста стая (без оригинален изходен код на Apple)
- Артефакти при плъзгане на икони: Незначителни визуални артефакти при плъзгане на икони на работния плот
- M68K изпълнение — заглушки: Segment Loader е завършен, цикълът за изпълнение не е реализиран
- Без поддръжка на TrueType: Само растерни шрифтове (Chicago)
- HFS само за четене: Виртуална файлова система, без реално записване на диска
- Без гаранции за стабилност: Сривове и неочаквано поведение са чести
Това е основно проект за обучение/изследване:
- Доклади за грешки: Подавайте проблеми с подробни стъпки за възпроизвеждане
- Тестване: Докладвайте резултати на различен хардуер/емулатори
- Документация: Подобрявайте съществуващата документация или добавяйте нови ръководства
- Inside Macintosh (1992-1994): Официална документация на Apple Toolbox
- MPW Universal Interfaces 3.2: Канонични заглавни файлове и дефиниции на структури
- Guide to Macintosh Family Hardware: Справочник за хардуерната архитектура
- Mini vMac: Емулатор на System 7 за поведенческа справка
- ResEdit: Редактор на ресурси за изследване на ресурсите на System 7
- Ghidra/IDA: За анализ на дизасемблиране на ROM
Това е реимплементация в чиста стая за образователни цели и целите на съхранението:
- Не е използван изходен код на Apple
- Основана само на публична документация и анализ по метода на черната кутия
- "System 7", "Macintosh", "QuickDraw" са търговски марки на Apple Inc.
- Не е свързан с, одобрен от или спонсориран от Apple Inc.
Оригиналният ROM на System 7 и софтуерът остават собственост на Apple Inc.
- Apple Computer, Inc. за създаването на оригиналния System 7
- Авторите на Inside Macintosh за изчерпателната документация
- Общността за съхранение на класическия Mac за поддържането на платформата жива
- 68k.news и Macintosh Garden за архивите с ресурси
- Редове код: ~57 500+ (включително 2 500+ за Segment Loader)
- Време за компилация: ~3-5 секунди
- Размер на ядрото: ~4,16 MB (kernel.elf)
- Размер на ISO: ~12,5 MB (system71.iso)
- Намаляване на грешките: 94% от основната функционалност работи
- Основни подсистеми: 28+ (Font, Window, Menu, Control, Dialog, TextEdit и др.)
Планирана работа:
- Завършване на цикъла за изпълнение на M68K интерпретатора
- Добавяне на поддръжка на TrueType шрифтове
- CJK растерни шрифтови ресурси за изобразяване на японски, китайски и корейски
- Реализация на допълнителни контроли (текстови полета, изскачащи менюта, плъзгачи)
- Записване обратно на диска за HFS файловата система
- Разширени функции на Sound Manager (миксиране, семплиране)
- Основни настолни аксесоари (Калкулатор, Бележник)
Състояние: Експериментален - Образователен - В разработка
Последна актуализация: Ноември 2025 (Подобрения на Sound Manager завършени)
За въпроси, проблеми или дискусия, моля използвайте GitHub Issues.