Changing the name of the programmed satellites
According to the EPS-103 manual in the Files for download / Original documentation section, the first 16 satellites are hard-programmed and cannot be changed. The other 16 satellites can be programmed manually, but their name cannot be written. Instead of the satellite name, only a blank space will appear on the display. Turns out this isn't the case for my firmware version 5.0. The position of the first 16 satellites can be overwritten in PRG 04 mode. The device remembers the newly saved positions even after turning it off and on. The names of the satellites cannot be edited, but they are stored in a table in the firmware.
If we have the firmware loaded by the programmer into the *.bin file, we can try to modify it. We open the read firmware in any binary file editor. For example in HexEditor.
The file begins with a table of interrupt vectors in accordance with the needs of the D8085 processor. In the V5000 file we find the following sequence of numbers at the beginning.
Address | Code | Instruction | Comment |
$0000 | C3 07 05 | JMP $0507 | vector RST0 |
~ | $FF ... | not used | |
$003C | C3 AF 05 | JMP $05AF | vector RST7.5 |
$003F | $FF | not used | |
$0040 | $19 | Data | the number of satellites in the table |
Addresses containing $FF are unused (unprogrammed) for the purposes of this firmware. The following address contains the number of all satellites programmed into the device. For V.5.000 there can be a maximum of 32 = $20. But there are only 25 ($19) in my firmware.
The following is a table of these satellites. Each satellite has a record of 9 bytes. The first byte specifies the azimuth direction. 01 = West, 02 = East. The second and third bytes determine the position of the satellite. The bytes are in reverse order, so for example $58, $1B represents the number $1B58, which in decimal is 7000. That's position 70.00°. The next 6 bytes are the letters of the satellite name in ASCII code. Let's look at a simple example. For example Hotbird 13.00°E.
E = 02
13,00° = 1300 dec = $0514; it will be in the reverse order $14, $05
HOTBRD = $48, $4F, $54, $42, $52, $44 (a maximum of 6 characters from the ASCII table)
This satellite could be found in the firmware as a sequence of numbers $02, $14, $05, $48, $4F, $54, $42, $52, $44.
The following table is stored in my firmware. You can try to identify individual entries in the EPS103V5000.bin file.
Address | 01 = west 02 = east |
Position [low byte] |
Position [high byte] |
Name [6 Bytes] |
Name [ASCII] |
Longitude |
$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 |
The last character of the 32nd satellite would be at address $0160. After switching on the device, the names of the satellites are copied to the RAM memory. But not the other data. So the user-programmed satellite position will not change even if there is a different entry in the table in the firmware. We cannot increase the maximum number of satellites to 32 by simply expanding this table. This would shift the addresses of the program stored behind the table. And the program would lose its integrity.
Firmware version 5.015 is different. The program also uses the RST6.5 interrupt, vector at address $0034. This will of course be reflected at the beginning of the file in the vector table. From address $0034 we find the code C3 23 19, i.e. jump to address $1923. The addresses of the other two vectors are also different. But what is much more interesting is that the firmware contains data on up to 60 satellites. Therefore, the limitation written in the manual that a maximum of 32 satellite positions can be programmed does not apply to this version.
You should now be clear about the marking of individual satellites in the firmware. So you should be able to read the firmware from the EPROM, modify it and load it back into the erased EPROM. Will you try it? If so, buy a spare EPROM for these experiments and keep the original one well as a safe backup. Good luck.