Предисловие переводчика (моё то есть - владельца этой страницы)
У меня на гитхабе лежит файловая система для флеш памяти, которую Самсунг электроникс разрабатывал в Москве несколько лет без моего участия. Когда я приехал в Москву в 2012 я уже не мог повлиять на ход процесса в основном из за укро-польских диверсантов, которые там окопались. В Частности Сабко и ещё одна дама. Сабко был уникальный в отделе человек тем что умел пить седжу с корейскими менеджерами и говорить хорошо на корейском языке.
А по роду своему был один из первых вайтишников в стране. Поэтому имел 5 ранг, как и все тим-лидеры. Но в отличии от остальных, был пустой как пробка.
Так вот можно, конешно, взять ту файловую систему и через адаптер подключить к старому компьютеру, но это не имеет смысла. Она хотя и бестолковая, но еще и объемная. Поэтому тут будем разбирать оригинальную файловую систему с которой работали создатели игры элита. Напоминаю что элита это не только те кто умеют быстро на клавиши нажимать, но еще и отличаются выдающимися умнственными аналитическими способностями. А именно могут удерживать в памяти человека одновременно сотни переменных и благодаря этому по сути собирать код без компилятора. Ну или хотя бы быстро находить решения по полноценному использованию кода.
Вот такие люди не занимались гриндерством. Не убивали по напрасну силы и тысячи часов детства и юнешества, а открыли для себя встроенный в элиту один из первых интерпретируемых асемблеров доменных, реализованных именно для задачи создания своей галактики, планеты, звезд, станции и кораблей. Посмотрим, были ли в этой файловой системе зацепки, которые давали не нулевой шанс выйти этим людям на след полного овладения игрой элита
Дисковый формат Acorn DFS
https://beebwiki.mdfs.net/Acorn_DFS_disc_format
Acorn DFS — это простая система хранения данных, разработанная компанией Acorn Computer для линейки 8-битных микрокомпьютеров. Он обеспечивает хранение до 31 файла и 200 килобайт данных на одностороннем диске и до 124 файлов и 800 килобайт на полностью оборудованном BBC Micro с двумя двусторонними дисководами.
История
Формат Acorn DFS (система хранения дисков) был представлен в серии модульных компьютеров System в конце 1970-х годов. Карты интерфейса диска были основаны на контроллере гибких дисков Intel 8271 (FDC).
В 1981 году Acorn разработал интерфейс Proton (позже ставшего BBC Micro) практически без изменений. Это была серьезная ошибка для Acorn, поскольку в течение двух лет запасы 8271 оказались в дефиците, и на смену им пришли контроллеры двойной плотности. Ряд сторонних поставщиков предложили интерфейсные платы, соответствующие разъему 8271; по большей части они были совместимы с Acorn DFS, но также предлагали свои собственные форматы двойной плотности.
Acorn добилась успеха в 1985 году, установив контроллер WD1770 в модель B+, но не расширила DFS, чтобы воспользоваться преимуществами дополнительной емкости хранилища. Тем временем их пакет расширения Plus 3 для Electron включал в себя новый 3½-дюймовый дисковод и, эксклюзивно, ADFS следующего поколения, в котором в полной мере использовалась двойная плотность. И DFS, и ADFS были встроены в компьютеры серии Master до того, как серии Master Compact и Archimedes перешли на ADFS.
Физический формат
Acorn DFS — это односторонний формат с одинарной плотностью и 40 или 80 дорожками. Двусторонний диск может содержать два тома DFS. Каждая дорожка содержит десять секторов по 256 байт, пронумерованных от 0 до 9.
Стандартным физическим носителем является 5¼-дюймовая дискета, поскольку это был единственный разумный вариант в 1981 году. «Удобные для образования» 3-дюймовые и 3½-дюймовые форматы, хотя и продавались пользователям BBC в начале 1980-х годов, не прижились как DFS носители. Но с тех пор, как машины и ПК ADFS стали использовать последнее, у него появилась тайная и постоянная база пользователей.
Поскольку этот формат был впервые реализован на контроллере гибких дисков Intel 8271, он представляет собой вариант формата дискет IBM 3740, и большая часть терминологии была перенесена. Более подробную информацию на более низком уровне см. в техническом описании Intel 8271.
Идентификаторы секторов
Каждому сектору присваивается идентификатор во время форматирования; параметры идентификатора, перечисленные ниже, используются DFS и контроллером гибких дисков для адресации секторов.
C номер цилиндра варьируется от 0 на самой внешней дорожке до 39 или 79 на самой внутренней дорожке.
H, номер заголовка = 0. Acorn DFS игнорирует это после форматирования. Некоторые форматировщики DFS устанавливают значение 1 на верхней поверхности диска (что соответствует дискам 2 или 3).
R, номер записи идет последовательно от 0 до 9 внутри каждой дорожки. Стандартный перекос колеи равен 3; то есть сектора, имеющие R = 0, являются первым сектором первой дорожки, четвертым сектором второй дорожки, седьмым сектором третьей, десятым сектором четвертой и так далее.
N, длина записи = 1, что показывает, что длина сектора равна 27 + 1, или 256 байт.
Все эти параметры потенциально могут принимать любые значения от 0 до 255, что сбивает с толку Acorn DFS и некоторые нестандартные контроллеры. Некоторые схемы защиты от копирования используют эту функцию.
Размер Gap
Формат IBM 3740 определяет пять видов промежутков, которые появляются в начале и конце каждой дорожки, между секторами и внутри секторов, чтобы дать аппаратному обеспечению дискеты время для стабилизации и подготовки. При форматировании 8271 принимает параметры, определяющие длину трёх таких промежутков. Подробную информацию о зазорах и их расположении см. в техническом описании Intel 8271.
На практике параметры промежутков могут варьироваться в довольно широком диапазоне и по-прежнему работают, а некоторые сторонние форматировщики настраивают размеры промежутков, чтобы улучшить стандартный форматтер Acorn. Утилиты *FORM40 и *FORM80 на диске с утилитами форматируют с помощью команды &63 и параметров <номер дорожки>, &10, &2A, &00, &10. То есть они указывают gap3 = gap1 = &10, чтобы записать 16 байтов &FF плюс 6 байтов &00; и gap5 = 0, что устраняет пробел перед индексом и метку адреса индекса.
В некоторых сторонних форматах DFS для gap1 и gap3 установлено значение &12.
Формат каталога
Прежде чем Acorn DFS сможет надежно использовать диск, его необходимо отформатировать и записать пустой каталог в первые два сектора. Это делается автоматически утилитами *FORM40 и *FORM80 и их эквивалентами сторонних производителей. Чтобы создать пустой каталог, программе достаточно очистить два сектора, а затем инициализировать поле размера диска.
Поля упакованы в каталоге по следующей схеме:
Поля в файле описания диска
Disc title | Up to 12 printable ASCII characters, padded with NULs (&00) or spaces. The first eight characters are placed in sector 0 bytes 0 to 7, the last four characters in sector 1 bytes 0 to 3. | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Cycle number | Значение в двоично-десятичном формате (BCD), где каждый шестнадцатеричный полубайт принимает значение от 0 до 9. Оно начинается с &00 и увеличивается при каждой перезаписи каталога. Предоставляет простую систему контроля версий и позволяет приложениям проверять актуальность своих внутренних копий каталога. Номер цикла хранится в секторе 1 байте 4. | |||||||||||||||
File offset | Смещение последней допустимой записи файла в каждом секторе каталога. Следовательно, это в 8 раз больше количества файлов. На диске может быть до 31 файла. Смещение файла хранится в секторе 1, байте 5. | |||||||||||||||
Boot option | Выбор действия, которое будет выполняться при загрузке диска. Поле использует два бита байта 6 в секторе 1:
| |||||||||||||||
Disc size | До 12 печатных символов ASCII, дополненных NUL (&00) или пробелами. Первые восемь символов помещаются в байты от 0 до 7 сектора 0, последние четыре символа - в байты от 0 до 3 сектора 1. |
Примечание переводчика: Уже виден принцип структурирования. Данные размещаются сверху вниз. С заранее известными размерами каждого поля в дескрипторе. Допустимы переносы, чтоб не делать выравнивание по битам или байтам или блокам. Но зато задачи дефрагментирования не стоит в принципе. То есть принцип ростой. Если знать таблицу, её начало, и смещение к нужной строчке, то прочитать серию логически связанных данных довольно просто, но надо знать где данные этой серии заканчиваются. По тому же самому принципу размещены параметры игры в начале загружаемого файла элиты. Запуск игры осуществляет команда.
Просмотр доступных файлов:
File name | От одного до семи допустимых символов имени файла, хранящихся в байтах сектора 0 с 8 по 14. Допустимыми символами являются печатаемые символы ASCII от &20 до &7E включительно, за исключением . : " # * и пробел. Поле дополняется пробелами. При открытии файла DFS ищет его по имени. |
---|---|
Directory | Один допустимый символ имени файла хранится в младших 7 битах сектора 0 байта 15. Идентифицирует каталог (пространство имен), которому принадлежит файл. Каталоги DFS аналогичны каталогам ADFS, DOS или Linux, за исключением того, что они не могут быть вложенными (все они являются корневыми каталогами) и используют общий каталог томов. Комбинация имени файла и каталога должна быть уникальной на томе. |
Attribute | Если установлен старший бит сектора 0 байта 15, то файл блокируется и не может быть изменен или удален. |
Load address | 18-битный адрес в памяти, по которому файл должен быть *LOAD по умолчанию. Младшие 8 бит находятся в секторе 1, байт 8; следующие 8 бит в секторе 1, байт 9; два старших бита находятся в битах 2 и 3 байта 14 сектора 1. Если файл не предназначен для *ЗАГРУЗКИ (например, последовательный файл или текст), все 18 бит должны быть установлены. |
Execution address | 18-битный адрес в памяти, по которому осуществляется переход, если файл имеет статус *RUN. Это не обязательно должно находиться в пределах загруженного файла. Младшие 8 бит находятся в секторе 1, байте 10; следующие 8 бит в секторе 1 байт 11; два старших бита находятся в битах 6 и 7 байта 14 сектора 1. Если файл представляет собой последовательный файл или текст, то должны быть установлены все 18 битов. |
File length | 18-битное значение, указывающее количество байтов в файле. Младшие 8 бит находятся в секторе 1, байт 12; следующие 8 бит в секторе 1 байт 13; два старших бита находятся в битах 4 и 5 сектора 1 байта 14. |
Start sector | 10-битный адрес логического блока первого сектора, содержащего файл. Младшие 8 бит находятся в секторе 1, байт 15; два старших бита находятся в битах 0 и 1 байта 14 сектора 1. Номера цилиндра и записи представляют собой результат и остаток, соответственно, когда LBA делится на 10. Начальный сектор 0 или 1 недействителен, как и файл. перекрывать каталог. |
00 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | |
---|---|---|---|---|---|---|---|---|
00 | NUL | DLE | (Space) | 0 | @ | P | ` | p |
01 | SOH | DC1 | ! | 1 | A | Q | a | q |
02 | STX | DC2 | " | 2 | B | R | b | r |
03 | ETX | DC3 | # | 3 | C | S | c | s |
04 | EOT | DC4 | $ | 4 | D | T | d | t |
05 | ENQ | NAK | % | 5 | E | U | e | u |
06 | ACK | SYN | & | 6 | F | V | f | v |
07 | BEL | ETB | ' | 7 | G | W | g | w |
08 | BS | CAN | ( | 8 | H | X | h | x |
09 | HT | EM | ) | 9 | I | Y | i | y |
0A | LF | SUB | * | : | J | Z | j | z |
0B | VT | ESC | + | ; | K | [ | k | { |
0C | FF | FS | , | < | L | \ | l | | |
0D | CR | GS | - | = | M | ] | m | } |
0E | SO | RS | . | > | N | ^ | n | ~ |
0F | SI | US | / | ? | O | _ | o | DEL |
ASCII value (hex) | (decimal) | Standard character | In MODES 0 to 6 | In MODE 7 | Teletext value (hex) |
---|---|---|---|---|---|
23 | 35 | # | # | # | 5F |
5B | 91 | [ | [ | ← | 5B |
5C | 92 | \ | \ | ½ | 5C |
5D | 93 | ] | ] | → | 5D |
5E | 94 | ^ | ^ | ↑ | 5E |
5F | 95 | _ | _ | – | 60 |
60 | 96 | ` | £ | £ | 23 |
7B | 123 | { | { | ¼ | 7B |
7C | 124 | | | ¦ | ‖ | 7C |
7D | 125 | } | } | ¾ | 7D |
7E | 126 | ~ | ~ | ÷ | 7E |
Сначала убедитесь, что все биты, отмеченные белым или кремовым на приведенной выше диаграмме, являются нулями; в противном случае каталог может быть немедленно отклонен.Проверьте также, что смещение файла кратно 8.Размер диска должен составлять от 2 до 800 секторов включительно, хотя формат допускает до 1023 секторов, а образы дисков могут содержать до этого количества.Название диска состоит из печатных символов ASCII, дополненных NUL или пробелами.Для каждой используемой записи файла:
Поле имени файла должно содержать от одного до семи допустимых символов и быть дополнено пробелами. Допустимыми символами являются печатные символы ASCII от &20 до &7E включительно, за исключением . : " # * и пробел.Символ каталога (без бита атрибута) должен быть допустимым символом имени файла.Имя файла (с учетом символа каталога) должно быть уникальным.Начальный сектор должен быть больше 1 и меньше размера диска.Пропуск файлов нулевой длины:
Стартовые сектора должны идти строго по убыванию.Ни один файл не может перекрывать предыдущий в каталоге. То есть start_sector_2 + ((length_2 + 255) DIV 256) ≤ start_sector_1.Ни один файл не может выходить за край диска. То есть start_sector + ((длина + 255) DIV 256) ≤ размер_диска. Аналогично, первый файл в каталоге не должен перекрывать воображаемый файл, поле начального сектора которого является полем размера диска.
Дальнейшая эвристика
Любой каталог, соответствующий вышеуказанному, является действительным каталогом DFS; однако лишь небольшая часть из них похожа на каталоги, увиденные в реальной жизни. В качестве неформального теста пара секторов, которые соответствуют многим из следующих значений, скорее всего, будет каталогом:
Размер диска составляет 400 секторов (40 дорожек) или 800 секторов (80 дорожек).
В каталоге $ есть файл с именем !BOOT.
16-й и 17-й биты адресов загрузки и выполнения (exec) полностью очищены или установлены в каждой записи файла.
В нескольких каталогах мало каталогов или несколько уникальных имен.
Большинство символов каталога — $ (по умолчанию).
Некоторые файлы имеют адреса загрузки в виде &3nn00 (nn=0E, 11, 19, 1B, 1D, 1F или 21) и адреса выполнения &3801F или &38023. (БАЗОВЫЕ программы.)
Некоторые файлы имеют одинаковые адреса загрузки и выполнения, обычно &xx00 или &3xx00, и часто имеют длину &yy00. (Дампы экрана и изображения машинного кода.)
Некоторые файлы имеют адреса загрузки и выполнения 0, &30000 или &3FFFF (текстовые и последовательные данные).
Размер многих файлов меньше 2 КБ; несколько файлов размером более 20К; никаких файлов размером более 64 КБ, кроме текста и последовательных данных.
В именах файлов очень мало строчных букв.
Имена файлов содержат часто встречающиеся пары букв.
Как видим режим написания текста смешенным кеглем это что то экстроординарное. Маленькие строчные буквы то же встречаются редко. Так же обращается внимание на частые пары букв, которые по факту в игре выводятся одним символом, который транслируется в 2 буквы. И за счет этого таблица кодов в игре более расширенная. это третий ключ для победы - надо смотреть какие именно коды были НЕ ВЫБРАНЫ для всех надписей на экране. Потому что те которые часто встречаются, пошли на название планет в Галактиках.
Варианты
Acron cистема DFS
Диски серии System имеют тот же формат каталога, что и формат каталога BBC Micro, за исключением того, что все записи находятся в каталоге " " (пробел), диски не имеют номера цикла, а файлы не имеют битов 16 и 17 загрузки и адреса выполнения[1]. Места, которые они могли бы занять, зарезервированы и должны быть очищены. Эту задачу выполняет программа BASIC под названием DCONV, находящаяся на диске с утилитами.
Уотфорд 62 DFS
Эта система размещает второй каталог в секторах 2 и 3 дорожки 0, позволяя разместить 62 файла на одном томе. Чтобы идентифицировать второй каталог, он устанавливает его заголовок размером 12 × &AA байт.
Без должной осторожности система, на которой работает Acorn DFS, может повредить диск Watford, поскольку она не знает о дополнительных файлах. В такой системе пользователь может запустить утилиту *SWAP для обмена каталогами. На практике в первом каталоге есть специальная запись (каталог!, имя!!!!!!!, длина &200, начальный сектор 2), защищающая второй от перезаписи.
Если какой-либо файл в первом каталоге начинается перед сектором 4 и не является специальным файлом, диск не является диском Watford DFS.
Опус DDOS
Это формат двойной плотности, но он упоминается здесь, поскольку каталоги томов основаны на Acorn DFS.
Диски DDOS разделены на от одного до восьми томов. Трек 0 зарезервирован для каталогов томов в стиле DFS, а также каталога диска, уникального для DDOS.
В каждом томе каталога:
Начальный сектор может быть на любое число меньше размера диска, поскольку DDOS добавляет смещение раздела, и поэтому каталог не находится в том же пространстве, что и файлы.
Размер диска — это размер текущего тома. Это 11-битная величина, старший бит находится в бите 2 сектора 1, байте 6.
Если и только если этот бит установлен:
Длина файла крадет дополнительный бит из адреса выполнения каждого файла (бит 6 сектора 1, байт 14+n).
Начальный сектор крадет дополнительный бит из адреса загрузки каждого файла (бит 2 сектора 1, байт 14+n).
Уотфорд DDFS
Это также формат двойной плотности с каталогами, похожими на Acorn DFS. Он использует 19-битную длину файлов и 11-битные LBA, но «лишние» биты хранятся в верхних битах названия диска и имен файлов, которые очищаются в Acorn DFS.
Приложения, поддерживающие формат Acorn DFS
On physical discs
- DFS Xfer, part of DFS Explorer by Jon Welch, runs between a BBC Micro fitted with DFS and a PC, and transfers images of physical discs over a serial link.
- Xfer in C, by Jon Welch and others, is the CLI based predecessor of DFS Xfer and also transfers individual files.
- Omnidisk / Omniflop, by Sherlock Consulting, reads and writes several native formats, including Acorn DFS, on compatible PCs.
- DiskToImg and ImgToDisk, runs on BBC/Master or RISC OS.
- Anadisk, by Sydex, Inc. is an older shareware utility to produce a disc image from a physical disc on compatible PCs.
- Plenty of utility ROMs, magazine listings and PD programs for the BBC Micro have built-in support for the DFS catalogue; primarily because Acorn DFS's API does not offer a machine readable catalogue of all files on the drive.
In disc images
- DFS Explorer, by Jon Welch, is a GUI-driven Windows application to manipulate DFS disc images including those transferred by DFS Xfer.
- Omnidisk / Omniflop, by Sherlock Consulting, will also display, add and extract files from DFS disc images.
- bbcim, by W.H.Scholten, is a versatile, CLI-based Linux tool to manipulate many types of BBC disc image.
- MkImg and UnImg, runs on BBC/Master, RISC OS or Windows.
Комментариев нет:
Отправить комментарий