Я реализую виртуальную память на двух кассетных магнитофонах на Commodore PET (для удовольствия) для Forth, которую я пишу. До сих пор я был в http://github.com/chitselb/pettil, если вам интересно.
Я планирую использовать собственный формат данных формата 192 байта кассеты. О да, всего 32 КБ ОЗУ для всего. Я вложил Woz отличный и очень эффективный в памяти интерпретатор Sweet-16 внутри языка.
Блок Forth (обычно) 1024 байта. Добавление двух байтов для идентификатора блока закрывает доступное виртуальное адресное пространство на 64 мегабайта, что намного больше, чем то, что подходит для ленты. Там будет "игровая" колода (устройство 1) и "колода записи" (устройство 2), а FLUSH будет включать в себя копирование всей виртуальной памяти с одного диска на другой. Зачем наклоняться на ветряные мельницы? Потому что назад в день, кассетная лента - то, что большинство владельцев ПЭТ, было включено.
Большинство данных будут экранами кода Forth, которые в этой реализации будут составлять 1000 байт текста и 24-байтная таблица строк, поскольку я также использую редактор экрана PET ROM. То, что я ищу, - это предложения для всего, что (возможно) избивает простую кодировку Run Length для этой цели, но без процессора и памяти накладные чем-то сложного, как Lempel-Ziv. Все предложения, кроме "просто забудьте об этом", оценены.