Изменение названия запрограммированных спутников
Согласно руководству EPS-103 в разделе Файлы для скачивания / Оригинальная документация , первые 16 спутников жестко запрограммированы и не могут быть изменены. Остальные 16 спутников можно запрограммировать вручную, но их имя нельзя написать. Вместо названия спутника на дисплее появится только пустое место. Оказывается, это не относится к моей версии прошивки 5.0. Положение первых 16 спутников можно перезаписать в режиме PRG 04. Устройство запоминает вновь сохраненные положения даже после выключения и включения. Названия спутников редактировать нельзя, но они хранятся в таблице в прошивке.
Если у нас есть прошивка, загруженная программатором в файл *.bin, мы можем попробовать ее модифицировать. Открываем считанную прошивку в любом редакторе бинарных файлов. Например в HexEditor.
Файл начинается с таблицы векторов прерываний в соответствии с потребностями процессора D8085. В файле V5000 мы находим в начале следующую последовательность чисел.
Адрес | Код | Инструкция | Комментарий |
$0000 | C3 07 05 | JMP $0507 | вектор RST0 |
~ | $FF ... | не используется | |
$003C | C3 AF 05 | JMP $05AF | вектор RST7.5 |
$003F | $FF | не используется | |
$0040 | $19 | Data | количество спутников в таблице |
Адреса, содержащие $FF, не используются (не запрограммированы) для этой прошивки. Следующий адрес содержит количество всех спутников, запрограммированных в устройстве. Для V.5.000 может быть максимум 32 = 20 долларов. Но в моей прошивке их всего 25 ($19).
Ниже приведена таблица этих спутников. Каждый спутник имеет запись размером 9 байт. Первый байт определяет азимутальное направление. 01 = Запад, 02 = Восток. Второй и третий байты определяют положение спутника. Байты расположены в обратном порядке, например, $58, $1B представляет собой число $1B58, которое в десятичном виде равно 7000. Это позиция 70,00°. Следующие 6 байтов — это буквы названия спутника в коде ASCII. Давайте рассмотрим простой пример. Например, Hotbird 13.00°E.
E = 02
13,00° = 1300 dec = $0514; это будет в обратном порядке $14, $05
HOTBRD = $48, $4F, $54, $42, $52, $44 (максимум 6 символов из таблицы ASCII)
Этот спутник можно было найти в прошивке как последовательность цифр $02, $14, $05, $48, $4F, $54, $42, $52, $44.
В моей прошивке хранится следующая таблица. Вы можете попробовать идентифицировать отдельные записи в файле EPS103V5000.bin.
Адрес | 01 = Запад 02 = Восток |
Должность [младший байт] |
Должность [верхний байт] |
Имя [6 байт] |
Имя [ASCII] |
Спутниковое местоположение |
$0041 | 02 | $C8 | $19 | $49 $4E $54 $2D $30 $37 | INT-07 | 66.00°E |
$004A | 02 | $70 | $17 | $49 $4E $54 $2D $31 $35 | INT-15 | 60,00°E |
$0053 | 02 | $28 | $0A | $41 $52 $41 $2D $31 $42 | ARA-1B | 26,00°E |
$005C | 02 | $2E | $09 | $44 $46 $53 $2D $31 $20 | DFS-1 | 23,50°E |
$0065 | 02 | $80 | $07 | $41 $53 $54 $2D $41 $31 | AST-A1 | 19,20°E |
$006E | 02 | $40 | $06 | $45 $54 $53 $2D $31 $20 | ETS-1 | 16,00°E |
$0077 | 02 | $14 | $05 | $45 $54 $53 $2D $34 $20 | ETS-4 | 13,00°E |
$0080 | 02 | $E8 | $03 | $45 $54 $53 $2D $35 $20 | ETS-5 | 10,00°E |
$0089 | 02 | $BC | $02 | $45 $54 $53 $2D $32 $20 | ETS-2 | 7,00°E |
$0092 | 02 | $F4 | $01 | $54 $45 $4C $2D $58 $20 | TEL-X | 5,00°E |
$009B | 01 | $64 | $00 | $49 $4E $54 $2D $31 $32 | INT-12 | 1,00°W |
$00A4 | 01 | $F4 | $01 | $54 $45 $4C $2D $31 $43 | TEL-1C | 5,00°W |
$00AD | 01 | $20 | $03 | $54 $45 $4C $2D $31 $41 | TEL-1A | 8,00°W |
$00B6 | 01 | $78 | $05 | $47 $52 $5A $2D $31 $35 | GRZ-15 | 14,00°W |
$00BF | 01 | $3A | $07 | $49 $4E $54 $2D $36 $20 | INT-6 | 18,50°W |
$00C8 | 01 | $6C | $07 | $54 $44 $46 $2D $31 $20 | TDF-1 | 19,00°W |
$00D1 | 01 | $6C | $07 | $4F $4D $50 $2D $31 $20 | OMP-1 | 19,00°W |
$00DA | 01 | $6C | $07 | $54 $56 $53 $2D $32 $20 | TVS-2 | 19,00°W |
$00E3 | 01 | $BE | $0A | $49 $4E $54 $2D $31 $31 | INT-11 | 27,50°W |
$00EC | 01 | $1C | $0C | $42 $53 $42 $2D $31 $20 | BSB-1 | 31,00°W |
$00F5 | 01 | $7A | $0D | $49 $4E $54 $2D $34 $20 | INT-4 | 34,50°W |
$00FE | 01 | $74 | $0E | $44 $53 $42 $2D $33 $37 | DSB-37 | 37,00°W |
$0107 | 01 | $94 | $11 | $50 $41 $53 $2D $31 $20 | PAS-1 | 45,00°W |
$0110 | 01 | $B4 | $14 | $49 $4E $54 $2D $31 $33 | INT-13 | 53,00°W |
$0119 | 01 | $9C | $18 | $49 $4E $54 $2D $35 $20 | INT-5 | 63,00°W |
Последний символ 32-го спутника будет по адресу $0160. После включения устройства имена спутников копируются в оперативную память. Но не другие данные. Таким образом, запрограммированное пользователем положение спутника не изменится, даже если в прошивке будет другая запись в таблице. Мы не можем увеличить максимальное количество спутников до 32, просто расширив эту таблицу. Это сместит адреса программы, хранящиеся за таблицей. И программа потеряет свою целостность.
Версия прошивки 5.015 отличается. Программа также использует прерывание RST6.5, вектор по адресу $0034. Это, конечно же, будет отражено в начале файла в векторной таблице. С адреса $0034 находим код C3 23 19, т.е. переходим на адрес $1923. Адреса двух других векторов также различны. Но что гораздо интереснее, прошивка содержит данные до 60 спутников. Таким образом, указанное в руководстве ограничение, что можно запрограммировать максимум 32 положения спутников, не относится к этой версии.
Теперь вам должно быть понятно про маркировку отдельных спутников в прошивке. Таким образом, вы должны иметь возможность прочитать прошивку из EPROM, изменить ее и загрузить обратно в стертую EPROM. Вы попробуете это? Если это так, купите запасную СППЗУ для этих экспериментов и сохраните оригинальную в качестве надежной резервной копии. Удачи.