Elektronika MK61/52
Version Française 
WikipédiA 
Specifications  MKCompiler  Calculators 3000  Enhanced MK52  ROM Module BRP3 (Maths)  ROM Module BRP4 (Games)  Speed testings 
RPN Calculator with

Forensic On scientific functions, calculate in degrees: arcsin(arccos(arctan(tan(cos(sin(9))))))Result: 9.0881454. The exact value is 9 ! 
Hebdogiciel20 =0 =1 2 FOR 0 SQR NEXT FOR 1 X^2 NEXT STOPResult: 1.6889469 The exact value is 2 ! 
I wrote a little compiler for Windows that :
NEW : recreate a source file from a C3 program file. NEW : recreate a source file from a serie of hex codes. 
; NEWTON method for equations ; solves f(x)=0 ; function is programmed at label f(x), it receives x on the stack ; it can use the whole stack and registers 49 and bd ; set precision into register "e" (0.01 for example) ; in the X register, put a first guess of the solution and RUN. ; it returns the solution. ; you can start again with new parameters (precision or starting x) ; usage: store error in register e (example 0.01 STO e) ; go to first step ( B/0) ; key in the first x value and RUN. #c3 1 ; auto save to C3 file #reg e error #reg a x #reg 0 delta #reg 1 h #reg 2 fxh #reg 3 fx DO =x $1e4 =delta REPEAT @x @delta * IF(x=0)THEN @delta ENDIF =h ; h=0.0001x or 0.0001 if x=0 @x + GOSUB f(x) =fxh ; calculates f(x+h) @x GOSUB f(x) =fx ; calculates f(x) @h * @fx @ fxh  / ; calculates dx = hf(x)/(f(x)f(x+h)) = f(x)/f'(x) ENTER sum x ; new x = x + dx x<>y abs @error  ; abs(dx)  error UNTIL(x<0) ; stop if <0 (if abs(dx) < error) @x ; display x STOP LOOP f(x): RTN 
Step  Code  Keys  000  4A  STO a 001  01  1 002  0C  EE 003  04  4 004  0B  // 005  40  STO 0 006  6A  RCL a 007  60  RCL 0 008  12  * 009  5E  F X=0 010  12  1 2 011  60  RCL 0 012  41  STO 1 013  6A  RCL a 014  10  + 015  53  GOSUB 016  42  4 2 017  42  STO 2 018  6A  RCL a 019  53  GOSUB 020  42  4 2 021  43  STO 3 022  61  RCL 1 023  12  * 024  63  RCL 3 025  62  RCL 2 026  11   027  13  / 028  0E  ENTER 029  6A  RCL a 030  10  + 031  4A  STO a 032  14  X<>Y 033  31  K ABS 034  6E  RCL e 035  11   036  5C  F X<0 037  06  0 6 038  6A  RCL a 039  50  STOP 040  51  GOTO 041  00  0 0 042  52  RTN  Addr  Name  042  F(X)  Reg  Name  0  DELTA 1  H 2  FXH 3  FX a  X e  ERROR  
Eugene Troitskiy is the author of the great Calculators 3000.
This emulator gives you access to a large field of russian calculators (20 of them!). Among them, the MK61 and the enhanced MK52.
When compiling a program, you can use the #C3 directive to get a C3 file loadable by Calculators 3000. You just have to load it with the option "Open with current calculator". MKCompiler generates a C3 file that looks like this: group Document end MachineFileName = "MK61.cfg" group Machine group ProgramMemory Size = 105 Data = 4A010C040B406A60125E1260416A105342426A5342436112636211130E 6A104A14316E115C066A505100520000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000 end end 
It is an enhanced model, similar to the MK61, but with the following:

The factorial example:  Compiled file:  Clearing memory:  Saving:  Loading: 

#reg 0 n DO =n 1 FOR n @n * NEXT STOP LOOP 
Step  Code  Keys  000  40  STO 0 001  01  1 002  60  RCL 0 003  12  * 004  5D  F L0 005  02  0 2 006  50  STOP 007  51  GOTO 008  00  0 0  Reg  Name  0  N  
The program uses 9 steps, so you have to prepare 9 free bytes in the EEPROM, let's say from address zero. To do that,
put the switch on CLEAR.1000009 A↑ ↑↓ The address is defined this way: 1ssssbb with

Then, you key in the program! Don't do it before as the CLEAR function erases both EEPROM and RAM ! Once it is entered, to save it, put the switches on SAVE and on PROGRAM and: 1000009 A↑ ↑↓ Once again, your program has desappeared, the SAVE function clears the RAM... 
To get your program back into RAM, even after a power off, put the switch on LOAD(*),
the other being on PROGRAM, and:
1000009 A↑ ↑↓ This time, it came back to RAM ! 
1001820 A↑ ↑↓Explanations: 9 bytes occupied are 18 nibbles (halfbytes!), and then, from that 18th nibble, you want to use 20 bytes.
This is a module containing 60 maths programs that you plug into the MK52. Among them, you'll find:
Download french manual for ROM Module BRP3 
Simultaneous equations  Entering data  Results 

The program 5 of bank 1 solves this system:
a.x + b.y = c a'.x + b'.y = c'Switch the module ON, set bank to 1, switches in position LOAD and PROGRAM, then type: 1047635 A↑ ↑↓This address comes from the user's manual, the program is now ready in RAM. 
Enter the data into the registers:

Put the program pointer to zero with в/О and run it with
С/П. Upon return, the display gives you the y value, with ↔ you get the x value (also in registers 1 and 2), the determinant is in register 3. If the display tells you ЕГГОГ, then the determinant is nul and no unique solution can be found. 
This is a ROM module containing 54 programs that you can plug into the MK52. Among them, you'll find:
Download french manual for ROM Module BRP4 
In this game you must align three points using this diagram : 
Switch the module ON, select bank 2, switches in positions LOAD and PROGRAM, then type:
1176498 A↑ ↑↓The address comes from the manual, now you can use the program. Initialize it with 77 into register Rd and run it with в/О then С/П 
The games returns the first position taken by the computer: it takes the 1!
Now, I type the position I want, let's say 8, and then С/П. The game goes on this way. If 77 is displayed, the computer has won and typing ↔ you'll see its last position taken. 
The program  Results  Conclusion 

STEP KEY n + n+1 GOTO n+2 nThe stack contains 1110, so the program counts one by one starting from zero. The program is run during 60 seconds, then stopped and I just have to read the current counter value. The test has been performed at steps 0, 8, 16 etc... 
The MK61 is 15% faster than the MK52. The step number has a significant influence on the excution speed. When at step 100, the speed is only 73% compared to the one at step zero. Step from 0 to 31 give the maximal speed. 
The program  Results  Conclusion 

Prog i Prog reference STEP KEY STEP KEY 00 RCL i 00 NOP 01 STO i 01 NOP 02 L3 02 L3 03 00 03 00 04 STOP 04 STOPRegister i contains PI, register 3 contains 50 for a loop 150. I wrote a reference program replacing RCL/STO with two NOP (nooperation). The execution times are the differences between the two versions. The test has been performed using registers i=0, 4, 8, 12. 
Even if differences are not spectacular, the lower, the faster! 