public void K_MtoX(int n) { //_rst.storeBx(); _rst.push(); if (n < 0 || n >= REGISTER_MEMORY_NVALS) { return; } UniversalValue uv = _registerAddress(n); if (uv.isEmpty()) { _rst.X.fromInt(0); return; } Int64 index = uv.toInt(); _autoIncrement(n, uv); if (index < 0 || index >= Extended_Memory.EXTENDED_MEMORY_NVALS) { _rst.X.fromInt(0); return; } index = index % 10000; _emem.setCounter((uint)index); _emem.toUV(_rst.X); if (_rst.X.isEmpty()) { _rst.X.fromInt(0); } }
public override void execute(MK52_Host components, string command) { UniversalValue X = _Stack(components).X; _ExtMem(components).swapWithUV(X); if (X.isEmpty()) { X.fromInt(0); } }
public override void execute(MK52_Host components, string command) { Register_Memory rm = _RegMem(components); UniversalValue ptrE = _ExtMem(components).getCurrentLine(); UniversalValue ptrR = rm._registerAddress(rm.registerByName(command)); if (ptrE.isEmpty()) { ptrR.fromInt(0); return; } ptrR.fromLocation(ptrE); }
public override void execute(MK52_Host components, string command) { RPN_Stack s = _Stack(components); s.storeBx(); s.push(); UniversalValue X = s.X; _ExtMem(components).toUV(X); if (X.isEmpty()) { X.fromInt(0); } }
public void fromUV(UniversalValue uv) { bool exists = _buffer.ContainsKey(_counter); if (uv.isEmpty() && exists) { _buffer.Remove(_counter); return; } if (!exists) { _buffer.Add(_counter, new UniversalValue()); } _buffer[_counter].fromLocation(uv); }
private bool _writeData() { if (_sd.println_P("#")) { return(true); } if (_sd.println_P("# MK-52 data")) { return(true); } if (_sd.println_P("#")) { return(true); } if (_sd.print_P("MC=")) { return(true); } if (_sd.println_P(extMem.getCounter().ToString("0000"))) { return(true); } for (uint i = 0; i < Extended_Memory.EXTENDED_MEMORY_NVALS; i++) { UniversalValue ptr = extMem.getLine(i); if (ptr.isEmpty()) { continue; } if (_sd.print_P("M")) { return(true); } if (_sd.print_P(i.ToString("0000"))) { return(true); } if (_sd.print_P(": ")) { return(true); } if (_sd.println_P(ptr.toString())) { return(true); } } return(false); }
public void K_XtoM(int n) { if (n < 0 || n >= REGISTER_MEMORY_NVALS) { return; } UniversalValue uv = _registerAddress(n); if (uv.isEmpty()) { return; } Int64 index = uv.toInt(); _autoIncrement(n, uv); A_XtoM(index); }
private bool _writeRegisters() { if (_sd.println_P("#")) { return(true); } if (_sd.println_P("# MK-52 registers")) { return(true); } if (_sd.println_P("#")) { return(true); } for (byte i = 0; i < Register_Memory.REGISTER_MEMORY_NVALS; i++) { UniversalValue uv = regMem._registerAddress(i); if (uv.isEmpty()) { continue; } if (_sd.print("R")) { return(true); } if (_sd.print(i.ToString("00"))) { return(true); } if (_sd.print("=")) { return(true); } if (_sd.println(uv.toString())) { return(true); } } return(false); }
public override void execute(MK52_Host components, string command) { RPN_Stack s = _dealWithClergy2(components); if (s == null) { return; } s.pop(0); UniversalValue X_ = s.X; UniversalValue Y_ = s.Bx; if (Y_.isEmpty()) { X_.fromInt(1); return; } double result = 1.0; double x = X_.toReal(); if (Y_.isReal()) { result = Math.Pow(x, Y_.toReal()); X_.fromReal(result); return; } Int64 p = Y_.toInt(); Int64 p2 = p; if (x == 0.0 && p == 0) // special case { X_.fromInt(1); return; } if (x == 0.0 && p < 0) { X_.fromReal(double.PositiveInfinity); return; } while (p > 0) { result *= x; p--; } x = 1.0 / x; while (p < 0) { result *= x; p++; } if (p2 <= 0 || X_.isReal() || Math.Abs(result) > UniversalValue.HUGE_POSITIVE_AS_REAL) { X_.fromReal(result); return; } // Try to keep as integer Int64 result2 = X_.toInt(); Int64 mul = result2; while (p2 > 1) { result2 *= mul; p2--; } X_.fromInt(result2); }