xrpn 1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: