A repository devoted to MK 90 soviet computer
структуры данных совместимы с файловой системой RT-11
Диапазон адресов Содержание
-------------------------------------------
0x0000-0x03FF Область загрузчика
0x0400-0x07FF Область каталога
0x0800-0x27FF Область данных
Стартовое меню MK-90 предлагает три варианта выбора: BASIC, СМП0, СМП1. При выборе СМП0 (или СМП1) калькулятор считывает код загрузчика с картриджа 0 (или 1) и выполняет его. Картриджи, отформатированные с помощью INIT, содержат код, отображающий сообщение “СМП без загрузчика”:
000000: nop
000002: jsr r7, @#153700
000006: jsr r7, @#120536
000012: mov @#034022, @#164000
000020: mov #104306, @#164002
000026: jsr
00 02 016\r\n smp БЕЗ ЗАГРУЗ^ИКА"
000061:
.even 000062: movb (r0)+, r2
000064: beq 000064
000066: jsr r7, @#116542
000072: br 000062
Пример hex-дампа каталога (файл MK90.BIN в архиве mk90prog.zip):
0400: 01 00 00 00 01 00 00 00 04 00
040A: 00 02 EA 27 00 00 BB 0C 01 00 00 00 36 89 ;1-я запись каталога
0418: 00 04 3A 14 A5 14 BB 0C 01 00 00 00 36 89 ;2-я запись каталога
0426: 00 04 9B 54 B8 38 BB 0C 01 00 00 00 36 89 ;3-я запись каталога
0434: 00 02 20 20 20 20 20 20 0D 00 20 20 20 20 ;4-я запись каталога
0442: 00 08
Каждая запись каталога занимает 7 слов (=14 байт). Младший байт в слове располагается перед старшим.
Смещение Размер Содержание
----------------------------------------------------------------------------------------
0 1 Атрибут
1 2 Имя файла (2 группы по 3 символа), дополненное пробелами
3 1 Расширение имени файла (группа из 3-х символов), по умолчанию BAS
4 1 Количество блоков (секторов), принадлежащих записи каталога. Сумма
этих слов для всех записей должна быть равна 16.
0x0001 + 0x0001 + 0x0001 + 0x000D = 16
5 1 Неизвестно
6 1 Неизвестно
Код Значение
--------------------------------------
0x0200 Удаленная или свободная запись
0x0400 Занятая запись
0x0800 Конец каталога
Имена и расширения файлов хранятся в сжатом виде — 3 символа по 2 байта.
Коды символов (десятичные)
Code Char | Code Char | Code Char | Code Char
0 blank 10 J 20 T 30 0
1 A 11 K 21 U 31 1
... ... ... ...
7 G 17 Q 27 $ 37 7
8 H 18 R 28 . 38 8
9 I 19 S 29 / 39 9
Например, вторая запись каталога по адресу 0x0418 содержит имя файла CIRCLE.BAS . Каждая группа из трех символов кодируется следующим образом:
Эти слова можно найти по адресам от 0x041A до 0x041F. Эту схему кодирования можно рассматривать как числа с основанием 40. Она также известна как Radix-50 (спасибо Алеку Воропаю за это обнаружение).
Область данных состоит из 16 блоков (секторов) по 512 байт каждый. Программы хранятся в простом ASCII (ключевые слова не размечены). Они начинаются с пустой строки (последовательность CR,LF) и заканчиваются маркером конца 0x00.
Система не поддерживает фрагментированные файлы, т.е. требует непрерывной группы свободных блоков памяти достаточного размера для хранения файла.