Proolskript

Сегодня отправил на Гитхаб вторую версию интерпретатора языка Прульскрипт

Первая работала напрямую с файлом (например goto было реализовано через lseek) и это жутко тормозило. Вторая вначале скачивает файл в ОЗУ и там работает с ним. Стало намного быстрее

Баг?

На одном компьютере Пруликс не грузится. Отладочный бут-сектор boote выдает дамп регистров, но не выводит текстовую строку. Может, что-то с адресацией?

Этот “один компьютер” тоже Интел, тоже 64 (как и мой ноут, на котором всё работает):

BIOS ECG3501V.86A.0084.2008.0523.1528

Proc Intel (r) Core ™ 2 Duo CPU E6550 @ 2.33 GHz Intel (r) EMT64T Capable

A20 gate

Разная работа с адресацией при загрузке Пруликса в Virtual Box и на реальной машине возможно связана с режимом A20 gate, который в виртуалке включен, а на физической машине при включении по умолчанию выключен

Fool filesystem

Мне внезапно стало лень программировать для Пруликса работу с файловой системой FAT-12/16/32 или ext2, а также лень разбираться с уже готовым для этого кодом и я придумал концепт своей простейшей fs, которую назвал fool file system

Вот драфт спецификации

http://proolepedia.kharkov.org/index.php/FoolFS

Про флешку и syslinux

Самая правильная загрузка ОС Пруликс (и других ОС) либо с дискеты, либо с сидирома (для виртуальных машин с образа дискеты или образа сидирома). Загрузка с флешки, сделанной из образа дискеты при помощи unetbootin происходит в два этапа: там вначале загружается syslinux и делает эмуляцию дискеты, невозбранно перехватывая прерывания 13h, 15h, 1EH

Памятная записка самому себе: HDD

Proolix-l загружается с дискеты, параметры дискеты (число дорожек, головок и секторов на дорожке) берет из бутсектора дискеты. Для работы с hdd надо эти величины где-то брать (mbr hdd может быть и пустым в случае чистого hdd. или это только на виртуальной машине? проверить на реальной машине mbr)

см. прерывание 13h фнукция 08h

и надо делать таблицу параметров для дисков (0 – дискета, 80 – первый hdd, 81 – второй)

как-то так

DIR-100

Хотел на свой старый роутер DIR-100 установить какой нибудь DD-WRT (то есть полноценный маленький Linux) и начать там разработку Пруликса. Оказалось, DD-WRT или OpenWRT с DIR-100 не совместимо. На форумах советуют (не мне, а аналогичным гикам) открыть корпус, заменить флеш-память на бОльшую, подключиться к консоли (разъем на плате) и работать. Но это к сожалению не мой метод, я не умею паять. Хотя, может удастся собрать DD-WRT размером в два мега? Но я пока никогда не собирал эту прошивку

Флешка

На данный момент Proolix грузится с флешки при помощи syslinux. То есть делается файл-образ дискеты, с которого можно грузиться, например виртуальной машиной. (Или копировать файл на реальную дискету и с нее грузиться) Затем образ дискеты инсталлируется на флешку при помощи утилиты unetbootin, которая инсталлирует на флешку syslinux.

Загрузка с флешки происходит так: вначале автоматически грузится syslinux, который затем загружает образ дискеты, подменяя при этом прерывания 13h, 15h, 1ah и делая виртуальный диск.

Я как любитель всего низкоуровневого решил поэкспериментировать с прямой загрузкой с флешки (раньше, в эпоху proolix-d вроде получалось). Как оказалось, флешка может быть отформатирована только под файловую систему FAT16 (но не FAT12), я начал переделывать бут-сектор. У меня есть заготовка кода для FAT-16, но что-то она пока не работает

Наработки (пока не работающие) я сброшу на github сегодня

* * *

О, и сайт с Ralf Brown Interrupt List не грузится. Надо искать альтернативный сайт

UPDATE. 03.11.2015. Ralf Brown Interrupt List уже грузится нормально