xrpn 1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (289) hide show
  1. checksums.yaml +7 -0
  2. data/bin/xrpn +110 -0
  3. data/cmd/abs +7 -0
  4. data/cmd/acos +10 -0
  5. data/cmd/adate +12 -0
  6. data/cmd/adateiso +13 -0
  7. data/cmd/add +9 -0
  8. data/cmd/adv +7 -0
  9. data/cmd/agsub +8 -0
  10. data/cmd/aleng +8 -0
  11. data/cmd/almcat +7 -0
  12. data/cmd/almnow +7 -0
  13. data/cmd/anum +10 -0
  14. data/cmd/aoff +7 -0
  15. data/cmd/aon +7 -0
  16. data/cmd/appchr +13 -0
  17. data/cmd/apprec +13 -0
  18. data/cmd/arcl +22 -0
  19. data/cmd/arcli +7 -0
  20. data/cmd/arclrec +30 -0
  21. data/cmd/arot +13 -0
  22. data/cmd/ashf +7 -0
  23. data/cmd/asin +10 -0
  24. data/cmd/asroom +7 -0
  25. data/cmd/asto +21 -0
  26. data/cmd/asub +8 -0
  27. data/cmd/atan +10 -0
  28. data/cmd/atime +26 -0
  29. data/cmd/atime24 +21 -0
  30. data/cmd/atox +9 -0
  31. data/cmd/aview +7 -0
  32. data/cmd/aviewc +7 -0
  33. data/cmd/beep +7 -0
  34. data/cmd/bindec +8 -0
  35. data/cmd/cat +26 -0
  36. data/cmd/cf +7 -0
  37. data/cmd/chs +7 -0
  38. data/cmd/cla +7 -0
  39. data/cmd/clalma +7 -0
  40. data/cmd/clalmx +7 -0
  41. data/cmd/cld +6 -0
  42. data/cmd/clear +7 -0
  43. data/cmd/clfl +13 -0
  44. data/cmd/clk12 +7 -0
  45. data/cmd/clk24 +7 -0
  46. data/cmd/clkeys +7 -0
  47. data/cmd/clock +7 -0
  48. data/cmd/clp +8 -0
  49. data/cmd/clralms +7 -0
  50. data/cmd/clrg +7 -0
  51. data/cmd/clrgx +12 -0
  52. data/cmd/cls +12 -0
  53. data/cmd/clst +10 -0
  54. data/cmd/clx +8 -0
  55. data/cmd/cmdadd +7 -0
  56. data/cmd/cmddel +7 -0
  57. data/cmd/correct +7 -0
  58. data/cmd/cos +10 -0
  59. data/cmd/crflas +9 -0
  60. data/cmd/crfld +9 -0
  61. data/cmd/cube +8 -0
  62. data/cmd/d_r +8 -0
  63. data/cmd/date +8 -0
  64. data/cmd/dateplus +12 -0
  65. data/cmd/ddate +11 -0
  66. data/cmd/dec +7 -0
  67. data/cmd/decbin +8 -0
  68. data/cmd/dechex +8 -0
  69. data/cmd/decoct +8 -0
  70. data/cmd/deg +7 -0
  71. data/cmd/degq +7 -0
  72. data/cmd/delchr +14 -0
  73. data/cmd/delrec +12 -0
  74. data/cmd/divide +9 -0
  75. data/cmd/dmy +7 -0
  76. data/cmd/dot +7 -0
  77. data/cmd/dow +9 -0
  78. data/cmd/drop +7 -0
  79. data/cmd/dropy +7 -0
  80. data/cmd/dse +40 -0
  81. data/cmd/ed +7 -0
  82. data/cmd/emdir +7 -0
  83. data/cmd/emdirx +14 -0
  84. data/cmd/emroom +7 -0
  85. data/cmd/end +9 -0
  86. data/cmd/eng +9 -0
  87. data/cmd/enter +8 -0
  88. data/cmd/exp +9 -0
  89. data/cmd/expx1 +9 -0
  90. data/cmd/fact +9 -0
  91. data/cmd/fc +7 -0
  92. data/cmd/fcc +8 -0
  93. data/cmd/fcs +8 -0
  94. data/cmd/fix +9 -0
  95. data/cmd/fixq +7 -0
  96. data/cmd/flsize +7 -0
  97. data/cmd/frc +8 -0
  98. data/cmd/fs +7 -0
  99. data/cmd/fsc +8 -0
  100. data/cmd/fss +8 -0
  101. data/cmd/geir +11 -0
  102. data/cmd/getas +7 -0
  103. data/cmd/getfile +12 -0
  104. data/cmd/getfilea +11 -0
  105. data/cmd/getkey +9 -0
  106. data/cmd/getkeyx +10 -0
  107. data/cmd/getp +13 -0
  108. data/cmd/getr +13 -0
  109. data/cmd/getrec +8 -0
  110. data/cmd/getrx +17 -0
  111. data/cmd/getsub +7 -0
  112. data/cmd/getweb +12 -0
  113. data/cmd/getx +12 -0
  114. data/cmd/grad +7 -0
  115. data/cmd/gsb +7 -0
  116. data/cmd/gto +23 -0
  117. data/cmd/help +14 -0
  118. data/cmd/hexdec +8 -0
  119. data/cmd/hms +12 -0
  120. data/cmd/hmsminus +14 -0
  121. data/cmd/hmsplus +13 -0
  122. data/cmd/hr +11 -0
  123. data/cmd/inschr +14 -0
  124. data/cmd/insrec +12 -0
  125. data/cmd/int +8 -0
  126. data/cmd/invf +7 -0
  127. data/cmd/isg +40 -0
  128. data/cmd/lastx +8 -0
  129. data/cmd/lbl +6 -0
  130. data/cmd/lift +8 -0
  131. data/cmd/ln +8 -0
  132. data/cmd/ln1x +8 -0
  133. data/cmd/log +8 -0
  134. data/cmd/mdy +7 -0
  135. data/cmd/mean +11 -0
  136. data/cmd/mod +13 -0
  137. data/cmd/multiply +9 -0
  138. data/cmd/oct +7 -0
  139. data/cmd/octdec +8 -0
  140. data/cmd/off +8 -0
  141. data/cmd/on +7 -0
  142. data/cmd/p_r +13 -0
  143. data/cmd/pack +7 -0
  144. data/cmd/page +13 -0
  145. data/cmd/pagedel +8 -0
  146. data/cmd/pageq +7 -0
  147. data/cmd/pageswap +8 -0
  148. data/cmd/pasn +7 -0
  149. data/cmd/pcat +14 -0
  150. data/cmd/pclps +12 -0
  151. data/cmd/percent +9 -0
  152. data/cmd/percentch +9 -0
  153. data/cmd/pi +8 -0
  154. data/cmd/posa +23 -0
  155. data/cmd/posfl +26 -0
  156. data/cmd/pow +9 -0
  157. data/cmd/pprg +27 -0
  158. data/cmd/pprgx +33 -0
  159. data/cmd/pra +7 -0
  160. data/cmd/prflags +8 -0
  161. data/cmd/prompt +8 -0
  162. data/cmd/prp +7 -0
  163. data/cmd/prregs +8 -0
  164. data/cmd/prstk +10 -0
  165. data/cmd/prx +7 -0
  166. data/cmd/prxm +21 -0
  167. data/cmd/pse +7 -0
  168. data/cmd/psize +7 -0
  169. data/cmd/purfl +14 -0
  170. data/cmd/r_d +8 -0
  171. data/cmd/r_p +18 -0
  172. data/cmd/rad +7 -0
  173. data/cmd/rand +10 -0
  174. data/cmd/rcl +23 -0
  175. data/cmd/rclaf +7 -0
  176. data/cmd/rclflag +16 -0
  177. data/cmd/rclpt +8 -0
  178. data/cmd/rclpta +16 -0
  179. data/cmd/rclsw +7 -0
  180. data/cmd/rdn +7 -0
  181. data/cmd/recip +8 -0
  182. data/cmd/regmove +18 -0
  183. data/cmd/regswap +19 -0
  184. data/cmd/reload +7 -0
  185. data/cmd/reszfl +7 -0
  186. data/cmd/rnd +8 -0
  187. data/cmd/root +9 -0
  188. data/cmd/rtn +12 -0
  189. data/cmd/rubycmd +7 -0
  190. data/cmd/runsw +7 -0
  191. data/cmd/rup +7 -0
  192. data/cmd/saveas +7 -0
  193. data/cmd/savep +7 -0
  194. data/cmd/saver +24 -0
  195. data/cmd/saverx +31 -0
  196. data/cmd/savex +10 -0
  197. data/cmd/savexm +7 -0
  198. data/cmd/sci +9 -0
  199. data/cmd/sdev +11 -0
  200. data/cmd/seekpt +10 -0
  201. data/cmd/seekpta +7 -0
  202. data/cmd/sep +7 -0
  203. data/cmd/setaf +7 -0
  204. data/cmd/setsw +7 -0
  205. data/cmd/sf +7 -0
  206. data/cmd/shellcmd +7 -0
  207. data/cmd/sign +19 -0
  208. data/cmd/sin +10 -0
  209. data/cmd/size +7 -0
  210. data/cmd/sizeq +7 -0
  211. data/cmd/sminus +20 -0
  212. data/cmd/splus +20 -0
  213. data/cmd/sqr +8 -0
  214. data/cmd/sqrt +8 -0
  215. data/cmd/sreg +7 -0
  216. data/cmd/sregq +7 -0
  217. data/cmd/stdivide +22 -0
  218. data/cmd/stmultiply +22 -0
  219. data/cmd/sto +21 -0
  220. data/cmd/stoflag +13 -0
  221. data/cmd/stop +7 -0
  222. data/cmd/stopsw +7 -0
  223. data/cmd/stplus +22 -0
  224. data/cmd/stsubtract +22 -0
  225. data/cmd/subtract +9 -0
  226. data/cmd/sw +7 -0
  227. data/cmd/swap +7 -0
  228. data/cmd/swpt +7 -0
  229. data/cmd/tan +10 -0
  230. data/cmd/tenx +8 -0
  231. data/cmd/time +8 -0
  232. data/cmd/tx +7 -0
  233. data/cmd/version +7 -0
  234. data/cmd/view +7 -0
  235. data/cmd/writefile +12 -0
  236. data/cmd/xeq +21 -0
  237. data/cmd/xeq0 +7 -0
  238. data/cmd/xeqnn +9 -0
  239. data/cmd/xeqy +7 -0
  240. data/cmd/xf +20 -0
  241. data/cmd/xgt0 +7 -0
  242. data/cmd/xgteq0 +7 -0
  243. data/cmd/xgteqnn +9 -0
  244. data/cmd/xgteqy +7 -0
  245. data/cmd/xgtnn +9 -0
  246. data/cmd/xgty +7 -0
  247. data/cmd/xlt0 +7 -0
  248. data/cmd/xlteq0 +7 -0
  249. data/cmd/xlteqnn +9 -0
  250. data/cmd/xlteqy +7 -0
  251. data/cmd/xltnn +9 -0
  252. data/cmd/xlty +7 -0
  253. data/cmd/xmexistq +15 -0
  254. data/cmd/xmfileq +7 -0
  255. data/cmd/xneq0 +7 -0
  256. data/cmd/xneqnn +9 -0
  257. data/cmd/xneqy +7 -0
  258. data/cmd/xnn +21 -0
  259. data/cmd/xtoa +7 -0
  260. data/cmd/xy +7 -0
  261. data/cmd/xyzalm +7 -0
  262. data/lib/_xrpn_version +5 -0
  263. data/lib/bei +18 -0
  264. data/lib/check +26 -0
  265. data/lib/conditional +10 -0
  266. data/lib/convert_base +8 -0
  267. data/lib/debug_mode +124 -0
  268. data/lib/dtparse +10 -0
  269. data/lib/error +10 -0
  270. data/lib/fact +7 -0
  271. data/lib/getpt +7 -0
  272. data/lib/help +12 -0
  273. data/lib/hp_41 +83 -0
  274. data/lib/ind +21 -0
  275. data/lib/load_xm +28 -0
  276. data/lib/locate_prg +32 -0
  277. data/lib/numeric +62 -0
  278. data/lib/numformat +12 -0
  279. data/lib/optparse +23 -0
  280. data/lib/read_cmd +12 -0
  281. data/lib/read_state +6 -0
  282. data/lib/save_state +18 -0
  283. data/lib/save_xm +5 -0
  284. data/lib/setpt +5 -0
  285. data/lib/string +28 -0
  286. data/lib/theme_dark +10 -0
  287. data/lib/theme_light +10 -0
  288. data/lib/xrpn_class +34 -0
  289. metadata +348 -0
data/cmd/pra ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def pra
3
+ puts "α = \"#{@a}\""
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/prflags ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def prflags
3
+ @flg = @flg.sort.to_h
4
+ @flg.each_pair {|key, value| puts "#{key}: #{value}"}
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/prompt ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def prompt
3
+ puts @a.c_a(1)
4
+ $prompt = true
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/prp ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def prp
3
+ pprg
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/prregs ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def prregs
3
+ @reg = @reg.sort.to_h
4
+ @reg.each_pair {|key, value| puts "#{key}: #{numformat(value)}"}
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/prstk ADDED
@@ -0,0 +1,10 @@
1
+ class XRPN
2
+ def prstk
3
+ puts "T = ".c_t + numformat(@t).c_t(1) + " α = ".c_a + @a.to_s.c_a(1)
4
+ puts "Z = ".c_z + numformat(@z).c_z(1)
5
+ puts "Y = ".c_y + numformat(@y).c_y(1)
6
+ puts "X = ".c_x + numformat(@x).c_x(1) + " L = ".c_l + numformat(@l).c_l(1)
7
+ end
8
+ end
9
+
10
+ # vim:ft=ruby:
data/cmd/prx ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def prx
3
+ puts "X = " + numformat(@x)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/prxm ADDED
@@ -0,0 +1,21 @@
1
+ class XRPN
2
+ def prxm
3
+ # Print content of current XM file
4
+ out = ""
5
+ @xmcont.each_index do |i|
6
+ if i == 0
7
+ out += "File = #{@xmcont[0][0]}\n"
8
+ out += "Type = #{@xmcont[0][1]}\n"
9
+ out += "Pointer = #{@xmcont[0][3].to_s}\n"
10
+ next
11
+ end
12
+ out += "#{format('%03d', i - 1)}"
13
+ out += " "
14
+ out += "#{@xmcont[i].to_s}\n"
15
+ end
16
+ puts out
17
+ File.write(Dir.home + "/.xrpn/print/" + @a, out) if @a != ""
18
+ end
19
+ end
20
+
21
+ # vim:ft=ruby:
data/cmd/pse ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def pse
3
+ sleep(1)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/psize ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def psize
3
+ return "PSIZE: No need for that function"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/purfl ADDED
@@ -0,0 +1,14 @@
1
+ class XRPN
2
+ def purfl
3
+ f = Dir.home + "/.xrpn/data/" + @a
4
+ fl = [f + ".pr", f + ".as", f + ".da"]
5
+ fl.each do |file|
6
+ if File.exist?(file)
7
+ File.delete(file)
8
+ @xmfile = "" if @xmfile == @a
9
+ end
10
+ end
11
+ end
12
+ end
13
+
14
+ # vim:ft=ruby:
data/cmd/r_d ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def r_d
3
+ @l = @x
4
+ @x = @x * 180 / Math::PI
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/r_p ADDED
@@ -0,0 +1,18 @@
1
+ class XRPN
2
+ def r_p
3
+ @l = @x
4
+ x = @x
5
+ y = @y
6
+ @x = Math::sqrt(x*x + y*y)
7
+ @y = Math::atan(y/x)
8
+ if x < 0 # Q2 & Q3
9
+ @y += Math::PI
10
+ elsif x >= 0 and y < 0 # Q4
11
+ @y += 2 * Math::PI
12
+ end
13
+ @y = @y * 180 / Math::PI if @deg == "deg"
14
+ @y = @y * 200 / Math::PI if @deg == "grad"
15
+ end
16
+ end
17
+
18
+ # vim:ft=ruby:
data/cmd/rad ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def rad
3
+ @deg = "rad"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/rand ADDED
@@ -0,0 +1,10 @@
1
+ class XRPN
2
+ def rand
3
+ @l = @x
4
+ lift
5
+ r = Random.new
6
+ @x = r.rand()
7
+ end
8
+ end
9
+
10
+ # vim:ft=ruby:
data/cmd/rcl ADDED
@@ -0,0 +1,23 @@
1
+ class XRPN
2
+ def rcl (r)
3
+ x = false
4
+ case r.downcase
5
+ when "x"
6
+ x = @x
7
+ when "y"
8
+ x = @y
9
+ when "z"
10
+ x = @z
11
+ when "t"
12
+ x = @t
13
+ end
14
+ lift
15
+ x ? @x = x : @x = @reg[r]
16
+ if @x == nil
17
+ @reg[r] = 0.0
18
+ @x = 0.0
19
+ end
20
+ end
21
+ end
22
+
23
+ # vim:ft=ruby:
data/cmd/rclaf ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def rclaf
3
+ return "RCLAF: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/rclflag ADDED
@@ -0,0 +1,16 @@
1
+ class XRPN
2
+ def rclflag
3
+ lift
4
+ f = ""
5
+ @flg.each do |key, value|
6
+ if key.match(/\d\d/)
7
+ value == true ? v = 1 : v = 0
8
+ f += "#{key}:#{v} "
9
+ end
10
+ end
11
+ f.chop
12
+ @x = f.to_s
13
+ end
14
+ end
15
+
16
+ # vim:ft=ruby:
data/cmd/rclpt ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def rclpt
3
+ lift
4
+ @x = @xmcont[0][3]
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/rclpta ADDED
@@ -0,0 +1,16 @@
1
+ class XRPN
2
+ def rclpta
3
+ f = Dir.home + "/.xrpn/data/" + @a
4
+ if File.exist?(f + ".as")
5
+ @xmcont = JSON.parse(File.read(f + ".as"))
6
+ @x = @xmcont[0][3]
7
+ elsif File.exist?(f + ".da")
8
+ @xmcont = JSON.parse(File.read(f + ".da"))
9
+ @x = @xmcont[0][3]
10
+ else
11
+ return "No such file: #{@a}"
12
+ end
13
+ end
14
+ end
15
+
16
+ # vim:ft=ruby:
data/cmd/rclsw ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def rclsw
3
+ return "RCLSW: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/rdn ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def rdn
3
+ @x, @y, @z, @t = @y, @z, @t, @x
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/recip ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def recip
3
+ @l = @x
4
+ @x = 1 / @x
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/regmove ADDED
@@ -0,0 +1,18 @@
1
+ class XRPN
2
+ def regmove
3
+ c = @x
4
+ b = c.to_i
5
+ e = (1000 * (c - b)).to_i
6
+ n = ((1000 * c).modulo(1).round(3) * 1000).to_i
7
+ n.times do |i|
8
+ f = (b + i).to_s
9
+ f = "%02d" % [f] if f == f.to_i.to_s
10
+ t = (e + i).to_s
11
+ t = "%02d" % [t] if t == t.to_i.to_s
12
+ @reg[f] = 0 if @reg[f] == nil
13
+ @reg[t] = @reg[f]
14
+ end
15
+ end
16
+ end
17
+
18
+ # vim:ft=ruby:
data/cmd/regswap ADDED
@@ -0,0 +1,19 @@
1
+ class XRPN
2
+ def regswap
3
+ c = @x
4
+ b = c.to_i
5
+ e = (1000 * (c - b)).to_i
6
+ n = ((1000 * c).modulo(1).round(3) * 1000).to_i
7
+ n.times do |i|
8
+ f = (b + i).to_s
9
+ f = "%02d" % [f] if f == f.to_i.to_s
10
+ t = (e + i).to_s
11
+ t = "%02d" % [t] if t == t.to_i.to_s
12
+ @reg[f] = 0 if @reg[f] == nil
13
+ @reg[t] = 0 if @reg[t] == nil
14
+ @reg[t], @reg[f] = @reg[f], @reg[t]
15
+ end
16
+ end
17
+ end
18
+
19
+ # vim:ft=ruby:
data/cmd/reload ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def reload
3
+ read_cmd
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/reszfl ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def reszfl
3
+ return "RESZFL: No need to resize files. Plenty of room here."
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/rnd ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def rnd
3
+ @l = @x
4
+ @x = @x.round(@i)
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/root ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def root
3
+ @l = @x
4
+ @x = @y ** (1 / @x)
5
+ dropy
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/rtn ADDED
@@ -0,0 +1,12 @@
1
+ class XRPN
2
+ def rtn
3
+ r = @rtn.pop
4
+ if r == nil
5
+ stop
6
+ else
7
+ @pc = r
8
+ end
9
+ end
10
+ end
11
+
12
+ # vim:ft=ruby:
data/cmd/rubycmd ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def rubycmd
3
+ eval(@a)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/runsw ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def runsw
3
+ return "RUNSW: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/rup ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def rup
3
+ @x, @y, @z, @t = @t, @x, @y, @z
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/saveas ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def saveas
3
+ save_xm
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/savep ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def savep
3
+ File.write(Dir.home + "/.xrpn/data/" + @a + ".pr", @prg[@pg])
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/saver ADDED
@@ -0,0 +1,24 @@
1
+ class XRPN
2
+ def saver
3
+ if @a != ""
4
+ if File.exist?(Dir.home + "/.xrpn/data/" + @a + ".da")
5
+ load_xm(@a)
6
+ else
7
+ crfld
8
+ end
9
+ end
10
+ if @xmcont[0][1] != "DA"
11
+ return "Not a data file"
12
+ end
13
+ @reg.each do |key, value|
14
+ next unless key.match(/\d\d\d*/)
15
+ r = key.to_i
16
+ value = 0.0 if value == nil
17
+ @xmcont[r + 1] = value
18
+ end
19
+ @xmcont.map! { |x| x || 0.0 }
20
+ savexm
21
+ end
22
+ end
23
+
24
+ # vim:ft=ruby:
data/cmd/saverx ADDED
@@ -0,0 +1,31 @@
1
+ class XRPN
2
+ def saverx
3
+ b = @x.to_i
4
+ e = (@x.frc * 1000).to_i
5
+ n = e - b
6
+ if @a != ""
7
+ if File.exist?(Dir.home + "/.xrpn/data/" + @a + ".da")
8
+ load_xm(@a)
9
+ else
10
+ crfld
11
+ end
12
+ end
13
+ if @xmcont[0][1] != "DA"
14
+ return "Not a data file"
15
+ end
16
+ @reg.each do |key, value|
17
+ next unless key.match(/\d\d\d*/)
18
+ r = key.to_i
19
+ next if r < b
20
+ break if r > e
21
+ break if @xmcont[0][3] > @xmcont.length - 2
22
+ value = 0.0 if value == nil
23
+ @xmcont[@xmcont[0][3]] = value
24
+ @xmcont[0][3] += 1
25
+ end
26
+ @xmcont.map! { |x| x || 0.0 }
27
+ savexm
28
+ end
29
+ end
30
+
31
+ # vim:ft=ruby:
data/cmd/savex ADDED
@@ -0,0 +1,10 @@
1
+ class XRPN
2
+ def savex
3
+ @xmcont[@xmcont[0][3] + 1] = @x
4
+ @xmcont[0][3] += 1
5
+ @xmcont[0][3] = @xmcont.length.to_f - 2 if @xmcont[0][3] > @xmcont.length - 2
6
+ save_xm
7
+ end
8
+ end
9
+
10
+ # vim:ft=ruby:
data/cmd/savexm ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def savexm
3
+ save_xm
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/sci ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def sci (n)
3
+ @i = n.to_i
4
+ @s = 6
5
+ @g = 1
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/sdev ADDED
@@ -0,0 +1,11 @@
1
+ class XRPN
2
+ def sdev
3
+ @l = @x
4
+ lift
5
+ lift
6
+ @x = Math::sqrt(((@reg[@srg + 5] * @reg[@srg + 1]) - (@reg[@srg] * @reg[@srg])) / (@reg[@srg + 5] * (@reg[@srg + 5] - 1)))
7
+ @y = Math::sqrt(((@reg[@srg + 5] * @reg[@srg + 3]) - (@reg[@srg + 2] * @reg[@srg + 2])) / (@reg[@srg + 5] * (@reg[@srg + 5] - 1)))
8
+ end
9
+ end
10
+
11
+ # vim:ft=ruby:
data/cmd/seekpt ADDED
@@ -0,0 +1,10 @@
1
+ class XRPN
2
+ def seekpt
3
+ @xmcont[0][3] = @x
4
+ @xmcont[0][3] = @xmcont.length.to_f - 2 if @xmcont[0][3] > @xmcont.length - 2
5
+ @xmcont[0][3] = 0.0 if @xmcont[0][3] < 0
6
+ save_xm
7
+ end
8
+ end
9
+
10
+ # vim:ft=ruby:
data/cmd/seekpta ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def seekpta
3
+ load_xm(@a, @x)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/sep ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def sep
3
+ @flg["29"] = !@flg["29"]
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/setaf ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def setaf
3
+ return "SETAF: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/setsw ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def setsw
3
+ return "SETSW: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/sf ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def sf (r)
3
+ @flg[r] = true
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/shellcmd ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def shellcmd
3
+ system(@a)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/sign ADDED
@@ -0,0 +1,19 @@
1
+ class XRPN
2
+ def sign
3
+ @l = @x
4
+ lift
5
+ if @x.is_a? String
6
+ @x = 0
7
+ return
8
+ end
9
+ if @x >= 0
10
+ @x = 1
11
+ elsif @x < 0
12
+ @x = -1
13
+ else
14
+ @x = 0
15
+ end
16
+ end
17
+ end
18
+
19
+ # vim:ft=ruby:
data/cmd/sin ADDED
@@ -0,0 +1,10 @@
1
+ class XRPN
2
+ def sin
3
+ @l = @x
4
+ @x = @x.to_rad if @deg == "deg"
5
+ @x = @x.to_radg if @deg == "grad"
6
+ @x = Math::sin(@x)
7
+ end
8
+ end
9
+
10
+ # vim:ft=ruby:
data/cmd/size ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def psize (n)
3
+ return "SIZE: No need for that function"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/sizeq ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def size?
3
+ return "SIZE = A Lot"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/sminus ADDED
@@ -0,0 +1,20 @@
1
+ class XRPN
2
+ def sminus
3
+ @l = @x
4
+ @reg[(@srg.to_i + 0).to_s] = 0 if @reg[(@srg.to_i + 0).to_s] == nil
5
+ @reg[(@srg.to_i + 1).to_s] = 0 if @reg[(@srg.to_i + 1).to_s] == nil
6
+ @reg[(@srg.to_i + 2).to_s] = 0 if @reg[(@srg.to_i + 2).to_s] == nil
7
+ @reg[(@srg.to_i + 3).to_s] = 0 if @reg[(@srg.to_i + 3).to_s] == nil
8
+ @reg[(@srg.to_i + 4).to_s] = 0 if @reg[(@srg.to_i + 4).to_s] == nil
9
+ @reg[(@srg.to_i + 5).to_s] = 0 if @reg[(@srg.to_i + 5).to_s] == nil
10
+ @reg[(@srg.to_i + 0).to_s] -= @x
11
+ @reg[(@srg.to_i + 1).to_s] -= @x * @x
12
+ @reg[(@srg.to_i + 2).to_s] -= @y
13
+ @reg[(@srg.to_i + 3).to_s] -= @y * @y
14
+ @reg[(@srg.to_i + 4).to_s] -= @x * @y
15
+ @reg[(@srg.to_i + 5).to_s] -= 1
16
+ @nolift = true
17
+ end
18
+ end
19
+
20
+ # vim:ft=ruby:
data/cmd/splus ADDED
@@ -0,0 +1,20 @@
1
+ class XRPN
2
+ def splus
3
+ @l = @x
4
+ @reg[(@srg.to_i + 0).to_s] = 0 if @reg[(@srg.to_i + 0).to_s] == nil
5
+ @reg[(@srg.to_i + 1).to_s] = 0 if @reg[(@srg.to_i + 1).to_s] == nil
6
+ @reg[(@srg.to_i + 2).to_s] = 0 if @reg[(@srg.to_i + 2).to_s] == nil
7
+ @reg[(@srg.to_i + 3).to_s] = 0 if @reg[(@srg.to_i + 3).to_s] == nil
8
+ @reg[(@srg.to_i + 4).to_s] = 0 if @reg[(@srg.to_i + 4).to_s] == nil
9
+ @reg[(@srg.to_i + 5).to_s] = 0 if @reg[(@srg.to_i + 5).to_s] == nil
10
+ @reg[(@srg.to_i + 0).to_s] += @x
11
+ @reg[(@srg.to_i + 1).to_s] += @x * @x
12
+ @reg[(@srg.to_i + 2).to_s] += @y
13
+ @reg[(@srg.to_i + 3).to_s] += @y * @y
14
+ @reg[(@srg.to_i + 4).to_s] += @x * @y
15
+ @reg[(@srg.to_i + 5).to_s] += 1
16
+ @nolift = true
17
+ end
18
+ end
19
+
20
+ # vim:ft=ruby: