Elektronika MK-52
The Elektronika MK-52 (Russian: Электро́ника МК-52) is an RPN-programmable calculator which was manufactured in the Soviet Union during the years 1983 to 1992.
The functionality of the MK-52 is identical to that of the MK-61, except the MK-52 has an internal non-volatile EEPROM memory module, for permanent data storage, diagnostic slot, and slot for ROM modules. Programming language and functionality of MK-52 and MK-61 are extensions of the MK-54, the B3-34 and B3-21 Elektronika calculators. It is the only known calculator to have internal storage in the form of an EEPROM module. All Soviet calculators are renowned for having a very large number of undocumented functions.
The MK-52 has 105 steps of volatile program memory, an internal EEPROM module (with 512 bytes of memory) and 15 memory registers. It functions using either four AA-size battery cells or a wall plug. It has a relatively dim, ten-digit (8 digit mantissa, 2 digit exponent) green vacuum fluorescent display. The MK-52 has an expansion port to which various ROM (Read-only memory) modules may be attached. Its system clock speed is approximately 75 kHz (derived from a phases generator chip), its weight is approximately 0.4 kilograms and its original selling price was 115 Roubles.
The MK-52 was used as a backup to the onboard computers of the Soyuz spacecraft on the Soyuz TM-7 mission to the Mir space station.
Basic operations
Note that throughout this page, square brackets represent actual keys, for example, [+] represents an 'addition' key.
The MK-52 has two main operating modes; 'automatic mode' and 'programming mode'. General calculations and operations are performed in automatic mode; programs are input in programming mode. To switch between modes, one must press [F] [CHS] (looks like [/-/]) to switch to automatic mode and one must press [F] [EE] (looks like [Bn]) to switch to programming mode.
Basic operations in automatic mode are conducted in accordance with RPN (Reverse Polish Notation) logic. For example, to evaluate 2+3, the following keystrokes are required: [2] [enter] (looks like [B^]) [3] [+].
Programming
In simple programming, commands are typed into the MK-52 in programming mode and are then executed in order. The MK-52 is fully capable of memory management and both conditional and unconditional branching, but these and more advanced capabilities are beyond the scope of this article (for the moment).
In programming mode, the screen displays information about the program in memory. For example, if '10 01 0E 03' is displayed, then this means that '0E' is stored at program step '00', '01' is stored at program step '01', '10' is stored at program step '02' and the machine is currently prompting for data to be input for program step '03'. Individual program operations are represented by two-digit operation codes in programming mode.
Saving to EEPROM
Note that before entering a program to volatile memory with the intention of saving this program to EEPROM memory, the EEPROM program space to be saved to must be cleared first, as performing the clearing operation clears the volatile memory as well as the selected area of the EEPROM memory.
Each program step requires 1 byte of memory and each register requires 7 bytes of memory.
When clearing, reading or writing to the EEPROM memory, the 'address' and 'range' are specified in the form of a six-digit number, preceded by a non-zero number (which is ignored) in automatic mode, i.e. '1aaaadd' means 'dd' bytes, starting at memory address 'aaaa'. A two-position data/program switch controls whether data (from the registers) or program memory is transferred; a three-position switch is used to select read, write and clear operations.
Additional information
Bitwise/binary operations
The MK-52 is fully capable of performing binary number boolean operations. The following example demonstrates the OR logical operation between the binary numbers '111000' and '100001':
First, the numbers are made into groups of four digits, adding leading zeros if necessary, i.e. making '111000' into groups of four gives '0011' and '1000'.
The equivalent decimal values of each of these four-digit binary numbers are '3' and '8', which gives a hexadecimal number of '38', equivalent to the binary number '111000'. Similarly, '100001' is equivalent to '21' in hexadecimal.
Binary numbers are input into the machine as hexadecimal numbers prepended by an '8.'.
So, the numbers '8.38' and '8.21' are entered into the MK-52 and the OR operation is performed on them. The OR operation is achieved by pressing [K], then [CHS] (which looks like [/-/]).
The result displayed should be '8.39'. This translates to the two binary number groups '0011' and 1001 and, hence, the binary number '111001', which is the result of the OR operation performed on the two binary numbers '111000' and '100001'.
The following list details the MK-52's graphical representation of hexadecimal numbers: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -, L, C, Г, E, (blank). Normal hexadecimal representation is 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E.
Games
There are a host of games available for the MK-52 (as can be found from one link below). The MK-52's undocumented functions tend to be heavily used in the various games of the machine due to their use in producing unusual calculations and specialised displays. A simple example of the modification of the display may be observed by the repeated squaring of, say, 1 x 10^50 (ignoring error messages).
Colours
The MK-52 was available in a variety of colours. Known colours are: black/grey, turquoise/blue, white/grey and orange.
Schematics
In what would be considered an unusual practice today (but was common for Soviet electronics), technical schematics were provided for the MK-52 when it was purchased, prompting user modification and repair of the machine.
EГГОГ
When an error is encountered on the machine, the display produces a message similar to the English 'Error'. The word, written in this fashion, cuts down on the number of display segments used to display the error message. The result is that, in Russian, this spelling is not pronounced 'error', but 'eggog'.
Known bugs/errors
There is currently only one known bug in the MK-52. That bug is that the MAX function gives a result of zero if one of the two arguments of the function is zero.
External links
- Russian to English translation of the MK-52's keyboard
- Museum of Soviet Calculators on the Web (MOSCOW)
- Sergei Frolov's "Soviet Calculators Collection"
- Website detailing programmable calculators
- More advanced programming techniques
- Command reference
- Alfred Klomp's page on "Hacking the MK-61"
- More 'EGGOG's
- Games etc for the MK-52 and compatibles
- 250 games for MK-52, MK-61
- MK-Compiler easy programming on the MK-61 and MK-52.
Emulators
- Here you can download an emulator of all Soviet Programmable Calculators
- the page with a description of the emulator