По сути представляет из себя PasteBin, скрещенный с JS-DOS. Файлы в JS-DOS сохранять нельзя, так что тащить весь шелл было незачем (отладку можно делать и в обычных дистрибутивах). Там только компилятор, а в роли редактора — PasteBin.
Из текущих особенностей: если не подключить модуль Crt, клавиатура виснет на ReadLn. Может быть, ещё удастся с этим что–нибудь сделать.
Если запустить на исполнение, то клавиатура захватывается, и поизменять внизу уже текст не получится. Либо вносим правки, либо запускаем.
Многие особенности похожи на обычный School Pak. Файлы компилятора находятся в X:\BP, а текущая директория — Y:\. Программа кладётся всегда под именем Y:\PROGRAM.PAS, а после компиляции становится Y:\SCHOOL.PAK\TEMP\PROGRAM.EXE. Кириллица переключается правым Ctrl.
Ограничение на размер файла — 128кБ.
--------------------
If you want to get to the top, you have to start at the bottom
От оригинального создателя и от Mozilla, теперь уже не разобраться, косячков оставалось прилично.
Самая досадная ошибка выглядела так(Показать/Скрыть)
Код
switch ($expiry_flag) { case 'd'; $expires="DATE_ADD(NOW(), INTERVAL 1 DAY)"; break; case 'f'; $expires="NULL"; default: case 'm'; $expires="DATE_ADD(NOW(), INTERVAL 1 MONTH)"; break; }
Когда спохватился, уже потерял 500 исходников, в том числе программы, которые в демонстрационных целях специально закреплял сбоку. Как нашёл, поправил, но былого не вернуть. Поборол демотивацию от работы с PHP и восстановил программы только вчера. Ещё заметил, что из-за чьих-то кривых рук функция запоминания настроек работала отнюдь не так, как мне бы хотелось:
//clean and validate the cookie inputs $data['poster']=$this->_cleanUsername($poster); $data['last_format']=$this->_cleanFormat($last_format); $data['last_expiry']=$this->_cleanFormat($last_expiry);
По идее, в конце должен быть _cleanExpiry, иначе expiry, восстановленный из кук, становится "text", в то время, как валидные значения — это "d", "m", "f". Конечно, невалидное значение "text" позже всё равно приводится к одному из валидных, и не факт, что вам, если вы вебмастер, это понравится.
Как общий принцип, по умолчанию теперь всё отправляется на вечное хранение. К счастью, кто-то продолжает постить, и уже на 900 постов набили. Чтобы это хорошо индексировалось в поисковиках, неплохо бы сделать листаемый список всех записей.
В School Pak по умолчанию включены проверки стека, диапазонов и переполнений, что соответствует идеологии языка Ада. А в Онлайне эти предпочтения не были продублированы ключами компилятора, и поведение программ могло отличаться. Теперь это исправлено.
Автор JS-DOS пишет мне, что в последних версиях em-dosbox уже научились справляться с блокировками ввода (ReadLn без Crt). С оригинальным JS-DOS была такая проблема, что там скрипт em-dosbox загружался через XHR и отправлялся в eval, что не давало кешировать скомпилированный asm.js, так что у нас кодовые базы разошлись. Также, JS-DOS расчитывает получить на вход zip с файловой системой, а в Turbo Pascal Онлайн один из файлов каждый раз разный. Чтобы с сервера сравнительно большой файл не перекачивать каждый раз, он грузится XHR и остаётся в кеше браузера, а на его основе в браузере каждый раз делается блоб, в котором в прорезь вставлен исходник и пересчитан CRC32. Если научиться самостоятельно работать с em-dosbox, всё это можно достигать более оптимально. Не тратить память браузера на блобы и обрезки блобов хотя бы. А можно даже и сохранение файлов реализовать и захват вывода программы. Так что текущие особенности — не навсегда.
Сообщение отредактировано: OCTAGRAM -
--------------------
If you want to get to the top, you have to start at the bottom