@stiletto Спасибо =).
Как ни странно, это продолжение #9ESVPY.
Есть несколько дурацких программ на бейсике, которые в детстве и в юности писали я и ещё несколько таких же старых пердунов, тогда моих одноклассников.
Некоторые ещё на Спектруе, некоторые уже на PC.
Есть не очень сильное желание их запустить в браузере, причём, поскольку тексты программ в каком-то смысле можно назвать реликвией (говно конечно, но выдержанное), то портануть их не покатит, если какие-то преобразования выполнять, то только полностью автоматически и над текстом целиком. Иначе результат нельзя считать подлинным.
Изучая разные варианты, я, в том числе, потрахался и с имитацией блокирующего ввода и вывода.
Сразу скажу, сто сопроцедуры в JavaScript 1.7 помогают, но всё равно они слишком слабые.
В итоге более или менее красиво можно сделать на данный момент только при помощи виртуальной машины, которая переходит при ожидании ввода в неблокирующую паузу, как здесь: http://stevehanov.ca/blog/index.php?id=92 Но тут как-то всё слишком кустарно сделано. Запускать кустарщину при помощи кустарщины -- уже перебор. Тем не менее, вариант написать милипизерный конвертор старого синтаксиса бейсика к тому, который понимает эта фиговина -- один из рабочих.
Можно конечно плюнуть на всё и жрать JSLinux, но это будет слишком толсто.
@dluciv На самом деле можно поковырять повнимательнее вот это: http://sharpc.livejournal.com/75856.html:
/После завершения первой недели декомпиляции я вдруг сообразил, что у меня в руках почти 200 килобайт синхронного кода, в котором вызываются ReadKey, что не очень совместимо с асинхронной событийной моделью JavaScript. triampurum предложил переписать это с использованием Continuation-Passing Style, но 124 точки асинхронности и 150 функций меня от этого отговорили./
Не дурак же делал (и сама игрушка про и от не дураков, которые учились на год старше меня там же, где и я).
@dluciv Ох. Он там делает вообще жесть: запускает программу, по ReadKey() выдаёт исключение и выходит в идл. А затем, получив кнопку, проигрывает программу с начала. Со всеми уже нажатыми кнопками и одной новой. С самого начала блядь! И, что самое ужасное, говорит, что мощности совреенных браузеров на это хватает.
Вообще конечно то, что Бейсик -- соверсшенно не структурный язык (он эволюционировал в сторону структурности, но по-прежнему поддерживает и провоцирует всякую херь типа GOTO в середину цикла), делает попытки транслировать его во что-то структурное довольно интересной задачей.
Страшнее только КОБОЛ и ПЛ/I...
Как ни странно, continuation passing style может, по идее, помочь и здесь...