Elektronika MK-90

Datasheet legend
Ab/c: Fractions calculation
AC: Alternating current
BaseN: Number base calculations
Card: Magnetic card storage
Cmem: Continuous memory
Cond: Conditional execution
Const: Scientific constants
Cplx: Complex number arithmetic
DC: Direct current
Eqlib: Equation library
Exp: Exponential/logarithmic functions
Fin: Financial functions
Grph: Graphing capability
Hyp: Hyperbolic functions
Ind: Indirect addressing
Intg: Numerical integration
Jump: Unconditional jump (GOTO)
Lbl: Program labels
LCD: Liquid Crystal Display
LED: Light-Emitting Diode
Li-ion: Lithium-ion rechargeable battery
Lreg: Linear regression (2-variable statistics)
mA: Milliamperes of current
Mtrx: Matrix support
NiCd: Nickel-Cadmium rechargeable battery
NiMH: Nickel-metal-hydrite rechargeable battery
Prnt: Printer
RTC: Real-time clock
Sdev: Standard deviation (1-variable statistics)
Solv: Equation solver
Subr: Subroutine call capability
Symb: Symbolic computing
Tape: Magnetic tape storage
Trig: Trigonometric functions
Units: Unit conversions
VAC: Volts AC
VDC: Volts DC
Years of production: 1988  Display type: Graphical display  
New price: SUR 1500.00   Display color: Black  
    Display technology: Liquid crystal display 
Size: 4½"×10½"×1½" Display size: 160×64 pixels
Weight: 1.5 lbs    
    Entry method: BASIC expressions 
Batteries: 4×"AA" alkaline Advanced functions: Trig Exp Grph Cmem RTC Snd 
External power: D2-10C adapter   Memory functions:  
I/O: Peripheral port, module ports     
    Programming model: BASIC 
Precision: 10 digits Program functions: Jump Cond Subr Lbl Ind  
Memories: 11824(0) bytes Program display: Text display  
Program memory: 11824 bytes Program editing: Text editor  
Chipset:   Forensic result:  

mk90.jpg (50240 bytes)What a curious machine! The Elektronika MK-90 is probably the most complex (not to mention most expensive) Soviet calculator ever made.

It is probably the most advanced as well; some of its four internal printed circuit boards are multi-layer boards, with chips and discrete components attached using surface-mount technology. The construction is clean, and overall the MK-90 gives the appearance of a well designed, albeit over-engineered, machine. (That said, the unit I recently received did have a bad contact that caused it to operate at a much lower speed than normal.)

This machine has been reported to have a CPU that is DEC compatible, although I have not yet been able to verify this. The built-in BASIC interpreter does have features resembling those of a BASIC interpreter that I worked with on a PDP/11 a few eons ago. It is an idiosyncratic BASIC, by the way; many of the usual shorthands do not work, for instance you need to explicitly use LET for assignments, nor can you substitute a question mark for a PRINT instruction.

Another curious feature of the MK-90 is that it does not have continuous memory! Memory contents are wiped out when the machine is reset or turned off. You need storage modules to which you must save your programs if you don't want them wiped out.

The large graphical screen is capable of displaying graphics (the MK-90 BASIC has several graphics commands) as well as cyrillic characters. The huge pixel size is probably a result of the limitations of Soviet-era manufacturing technology, not a desire to make a screen that's legible without reading glasses!

My biggest complaint is the keyboard. The key arrangement is awkward, and it appears that the keyboard scanning routine is not interrupt-driven: if you don't press and hold a key for an appreciable fraction of a second, the keystroke will not register. My second biggest gripe? Well, I haven't yet found a key combination that stops a running BASIC program without resetting the whole machine (wiping out BASIC memory in the process of course.) (Update on March 16, 2005: I've been informed by Mahmoud Yassine that pressing the [Cy], [P] and [BK] keys in order does the trick. Haven't tried it myself yet.)

On the other hand, the machine does have a built-in beeper and its manual comes complete with an example that whistles a recognizable rendition of "Moscow Nights"...

But my programming example has nothing to do with music. The following implementation of the Gamma function demonstrates programming on the MK-90:

20 LET G=1
30 IF X>5 THEN GOTO 70
40 LET G=G*X
50 LET X=X+1
60 GOTO 30
80 LET G=G+((((1/1188/X/X-1/1680)/X/X+1/1260)/X/X-1/360)/X/X+1/12)/X

NEW! (2007/3/18): Piotr Piatek from Poland has written a very nice emulator of the MK-90 that also permits machine language debugging.