?

Log in

No account? Create an account
эмуляторное - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

эмуляторное [сент. 7, 2017|11:35 pm]
Anatoly Vorobey
[Tags|, ]

Сегодня смотрел на то, какие есть эмуляторы старых Макинтошей (тех, что с процессором 68k, модели 1984-1996 примерно). Оказалось, что их не так много. Внутри браузера работает только один эмулятор, PCE.js, который является джаваскрипт-версией (через транслятор Emscripten) эмулятора PCE, написанного на олдскульном C человеком с неправдоподобным именем Hampa Hug.

Однако PCE - и соответственно его браузерная версия - поддерживает только ранние модели с монохромными дисплеями, вплоть до Macintosh Classic (1990). Первая модель Макинтоша с цветным дисплеем была Macintosh II (1987), в другой линейке - он ее не умеет. На словах больше моделей, включая II, поддерживает проект MAME, и он также утверждает, что все в нем можно скомпилировать в джаваскрипт через Emscripten (JSMAME); но конкретного работающего примера такого Мака нет, а MAME это такие дебри непроходимого и страшного кода, что мне не хочется туда и соваться. Сомневаюсь, что это хорошо работает: когда недавно энтузиасты archive.org сделали коллекцию ранних Макинтошных игр и программ, запускаемых в браузере, они воспользовались вышеупомянутым PCE.js, а не JSMAME.

Собственно, нашел только один эмулятор, хорошо поддерживающий цветные Макинтоши, конкретно модель Mac II. Он называется "Mini vMac", легкий, быстрый, удобный. Увы, только для десктопных ОС, не в браузере; но работает отлично. Когда мне захотелось посмотреть на его исходники, узнал удивительнейшую вещь о нем. Если скачать исходники эмулятора, то получаешь имидж диска для старых Макинтошей, который следует воткнуть... в сам эмулятор! Нет, сама компиляция исходников (написанных на C) в конечном счете будет под Windows, или Linux, или где еще надо. Но автор практически всё в эмуляторе сделал опцией времени сборки - и какую модель эмулировать, и сколько у нее памяти, итд. итд. И написал для всего этого собственную систему сборки, которой надо дать набор аргументов, а она на их основе создает подогнанный под них набор исходников на C и Makefile. Эта система сборки - программа для древнего Макинтоша и бежит внутри эмулятора! Это самый экстремальный пример принципа "eat your own dogfood", что я припоминаю.

До недавнего времени процесс выглядел так, если я верно понял. Скачиваешь готовый эмулятор для своей системы и имидж диска с исходниками. Запускаешь диск под эмулятором, запускаешь систему сборки, она пишет набор исходников на тот же диск. Теперь тебе его нужно вытащить из древнего эппловского формата HFS, в котором отформатирован диск, в свою настоящую ОС. Но недавно автор упростил этот процесс следующим образом. Он вставил в свой эмулятор специальную дырку, с помощью которой система сборки может сбежать за пределы своей виртуальной клетки, и приказать эмулятору записать такие-то данные на "настоящем" компьютере. Намного удобнее! Но как это все странно.
СсылкаОтветить

Comments:
[User Picture]From: webface
2017-09-07 09:47 pm
Осталось теперь запустить всю эту махину на эмуляторе Линукса в браузере.
(Ответить) (Thread)
[User Picture]From: dmarck
2017-09-07 11:05 pm
... в трёхслойной виртуалке!

(впрочем, знаю от реальных внедренцев, что какие-то совсем непригодные для не то чтоб апгрейда, но любого трогания банковские процессы на COBOL/IBM370 гоняют в виртуалках на эмуляторах этого самого IBM370)
(Ответить) (Parent) (Thread)
[User Picture]From: occuserpens
2017-09-08 01:36 am
Вот это я понимаю ностальгия: http://www.conmicro.com/hercos360/
http://www.vintagebigblue.org/vbblue3270About.php

Edited at 2017-09-08 01:47 (UTC)
(Ответить) (Thread)
[User Picture]From: freedom_of_sea
2017-09-08 10:07 am
Нео
(Ответить) (Thread)
[User Picture]From: tyomitch
2017-09-10 03:30 pm
Когда я искал такой эмулятор (для десктопа), меня полностью удовлетворил https://en.wikipedia.org/wiki/Basilisk_II
(Ответить) (Thread)