Тема: Список: T I A B S R A B
Вы вероятно знаете что эпловская DOS 3.3 использовала 8 типов обозначения файлов T I A B S R A B
Агатовский вариант : T I A B S П К Д
Почему эпловцы сделали такой ограниченный список??? там места для их хранения достаточно, можно было несколько десятков типов запилить, но , видно, че-то экономили опять. Не знаю что там можно сэкономить - всё равно под тип 7 бит отводится - 128 комбинаций.
Агатовские ДОСы тоже пилили на основе Эпловских исходников, там процедура распаковки этих 7 бит в буквы.
ADE8 - BD C8 B4 "=H4" LDA B4C8, X
ADEB - 29 7F .. ".ъ" AND #7F
ADED - A0 07 .. " ." LDY #07
ADEF - 0A .. .. "." ASL A
ADF0 - 0A .. .. "." ASL A
ADF1 - B0 03 .. "0." BCS ADF6
ADF3 - 88 .. .. "." DEY
ADF4 - D0 FA .. "PЗ" BNE ADF0
ADF6 - B9 A7 B3 "9'3" LDA B3A7, Y
1) отбрасывает старший бит (там бит защиты)
2) если получился 0 - переходит на шаг 8
3) сдвигает байт вправо
4) переходи на шаг 2
8) выводит букву номер N из списка "TIABSПКД" , где N - число выполненных сдвигов на шаге 3
Т.е. старший бит - признак защиты (lock), а дальше ищется наиболее старший единичный бит и по его номеру ставиться тип.
Кажется, что проще было бы в младших разрядах просто хранить код буквы - можно было бы все знаки использовать эпловских.
Всё равно при поиске файлов внутри ДОСа , при вызове процедуры поиска , ей передаётся этот внутренний код в виде байта, какая разница - букву передать или вот эти константы - 2 - A , 4 - B, 1 - I, 0 - T...... Ничего не упрощается и не улучшается.
Т.е. почему используется такое сложное преобразование кода в букву, хотя можно было просто хранить ASCII-код буквы?
Почему просто не взять LDA b4C8,X / and #7F и остальное убрать? Тогда можно было бы обойтись без таблицы b3a7...