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/sqr ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def sqr
3
+ @l = @x
4
+ @x = @x ** 2
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/sqrt ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def sqrt
3
+ @l = @x
4
+ @x = Math::sqrt(@x)
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/sreg ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def sreg (r)
3
+ @srg = r
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/sregq ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def sreg?
3
+ return "ΣREG = " + @sreg
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/stdivide ADDED
@@ -0,0 +1,22 @@
1
+ class XRPN
2
+ def stdivide (r)
3
+ case r.downcase
4
+ when "x"
5
+ @l = @x
6
+ @x /= @x
7
+ when "y"
8
+ @y /= @x
9
+ when "z"
10
+ @z /= @x
11
+ when "t"
12
+ @t /= @x
13
+ when "l"
14
+ @l /= @x
15
+ else
16
+ @reg[r] = 0 if @reg[r] == nil
17
+ @reg[r] /= @x
18
+ end
19
+ end
20
+ end
21
+
22
+ # vim:ft=ruby:
data/cmd/stmultiply ADDED
@@ -0,0 +1,22 @@
1
+ class XRPN
2
+ def stmultiply (r)
3
+ case r.downcase
4
+ when "x"
5
+ @l = @x
6
+ @x *= @x
7
+ when "y"
8
+ @y *= @x
9
+ when "z"
10
+ @z *= @x
11
+ when "t"
12
+ @t *= @x
13
+ when "l"
14
+ @l *= @x
15
+ else
16
+ @reg[r] = 0 if @reg[r] == nil
17
+ @reg[r] *= @x
18
+ end
19
+ end
20
+ end
21
+
22
+ # vim:ft=ruby:
data/cmd/sto ADDED
@@ -0,0 +1,21 @@
1
+ class XRPN
2
+ def sto (r)
3
+ case r.downcase
4
+ when "x"
5
+ @l = @x
6
+ @x = @x
7
+ when "y"
8
+ @y = @x
9
+ when "z"
10
+ @z = @x
11
+ when "t"
12
+ @t = @x
13
+ when "l"
14
+ @l = @x
15
+ else
16
+ @reg[r] = @x
17
+ end
18
+ end
19
+ end
20
+
21
+ # vim:ft=ruby:
data/cmd/stoflag ADDED
@@ -0,0 +1,13 @@
1
+ class XRPN
2
+ def stoflag
3
+ flags = @x.split(" ")
4
+ flags.each do |fv|
5
+ f = fv.sub(/:.*/, '')
6
+ v = fv.sub(/\d\d:(\d)/, '\1')
7
+ v == "1" ? v = true : v = false
8
+ @flg["#{f}"] = v
9
+ end
10
+ end
11
+ end
12
+
13
+ # vim:ft=ruby:
data/cmd/stop ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def stop
3
+ $debug = true
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/stopsw ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def stopsw
3
+ return "STOPSW: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/stplus ADDED
@@ -0,0 +1,22 @@
1
+ class XRPN
2
+ def stplus (r)
3
+ case r.downcase
4
+ when "x"
5
+ @l = @x
6
+ @x += @x
7
+ when "y"
8
+ @y += @x
9
+ when "z"
10
+ @z += @x
11
+ when "t"
12
+ @t += @x
13
+ when "l"
14
+ @l += @x
15
+ else
16
+ @reg[r] = 0 if @reg[r] == nil
17
+ @reg[r] += @x
18
+ end
19
+ end
20
+ end
21
+
22
+ # vim:ft=ruby:
data/cmd/stsubtract ADDED
@@ -0,0 +1,22 @@
1
+ class XRPN
2
+ def stsubtract (r)
3
+ case r.downcase
4
+ when "x"
5
+ @l = @x
6
+ @x -= @x
7
+ when "y"
8
+ @y -= @x
9
+ when "z"
10
+ @z -= @x
11
+ when "t"
12
+ @t -= @x
13
+ when "l"
14
+ @l -= @x
15
+ else
16
+ @reg[r] = 0 if @reg[r] == nil
17
+ @reg[r] -= @x
18
+ end
19
+ end
20
+ end
21
+
22
+ # vim:ft=ruby:
data/cmd/subtract ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def -
3
+ @l = @x
4
+ @x = @y - @x
5
+ dropy
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/sw ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def sw
3
+ return "SW: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/swap ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def swap
3
+ @x, @y = @y, @x
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/swpt ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def swpt
3
+ return "SWPT: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/tan ADDED
@@ -0,0 +1,10 @@
1
+ class XRPN
2
+ def tan
3
+ @l = @x
4
+ @x = @x.to_rad if @deg == "deg"
5
+ @x = @x.to_radg if @deg == "grad"
6
+ @x = Math::tan(@x)
7
+ end
8
+ end
9
+
10
+ # vim:ft=ruby:
data/cmd/tenx ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def tenx
3
+ @l = @x
4
+ @x = 10 ** @x
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/time ADDED
@@ -0,0 +1,8 @@
1
+ class XRPN
2
+ def time
3
+ lift
4
+ @x = Time.now.strftime("%H.%M%s").to_f
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby:
data/cmd/tx ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def tx # T+X
3
+ return "T+X: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/version ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def version
3
+ xrpn_version
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/view ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def view (r)
3
+ puts @reg[r]
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/writefile ADDED
@@ -0,0 +1,12 @@
1
+ class XRPN
2
+ def writefile
3
+ begin
4
+ @x = File.write(@a)
5
+ File.write(@a, @x)
6
+ rescue
7
+ return "Cannot write to the file '#{a}'"
8
+ end
9
+ end
10
+ end
11
+
12
+ # vim:ft=ruby:
data/cmd/xeq ADDED
@@ -0,0 +1,21 @@
1
+ class XRPN
2
+ def xeq (l)
3
+ page, pos = locate_prg (l)
4
+ if pos == nil
5
+ if l.match(/".*"/)
6
+ return "Error: No such global label: #{l}"
7
+ else
8
+ return "Error: No such label: #{l}"
9
+ end
10
+ else
11
+ if @page != @pg
12
+ @pg = page
13
+ end
14
+ @rtn.push(@pc) unless $debug
15
+ @pc = pos
16
+ $debug = false
17
+ end
18
+ end
19
+ end
20
+
21
+ # vim:ft=ruby:
data/cmd/xeq0 ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xeq0?
3
+ @x == 0 ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xeqnn ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def xeqnn?
3
+ r = @x.to_i
4
+ r = "%02d" % [r] if r == r.to_i.to_s
5
+ @x == @reg[r] ? conditional(true) : conditional(false)
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/xeqy ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xeqy?
3
+ @x == @y ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xf ADDED
@@ -0,0 +1,20 @@
1
+ class XRPN
2
+ def xf # X<>F
3
+ fsumx = 0
4
+ 7.times do |f|
5
+ fl = "%02d" % [f]
6
+ fsumx += 2 ** f if @flg[fl]
7
+ fl = "%02d" % [7 - f]
8
+ fx = 2 ** (7 - f)
9
+ if @x / fx >= 1
10
+ @flg[fl] = true
11
+ @x -= fx
12
+ else
13
+ @flg[fl] = false
14
+ end
15
+ end
16
+ @x = fsumx
17
+ end
18
+ end
19
+
20
+ # vim:ft=ruby:
data/cmd/xgt0 ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xgt0?
3
+ @x > 0 ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xgteq0 ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xgteq0?
3
+ @x >= 0 ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xgteqnn ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def xgteqnn?
3
+ r = @x.to_i
4
+ r = "%02d" % [r] if r == r.to_i.to_s
5
+ @x >= @reg[r] ? conditional(true) : conditional(false)
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/xgteqy ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xgteqy?
3
+ @x >= @y ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xgtnn ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def xgtnn?
3
+ r = @x.to_i
4
+ r = "%02d" % [r] if r == r.to_i.to_s
5
+ @x > @reg[r] ? conditional(true) : conditional(false)
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/xgty ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xgty?
3
+ @x > @y ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xlt0 ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xlt0?
3
+ @x < 0 ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xlteq0 ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xlteq0?
3
+ @x <= 0 ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xlteqnn ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def xlteqnn?
3
+ r = @x.to_i
4
+ r = "%02d" % [r] if r == r.to_i.to_s
5
+ @x <= @reg[r] ? conditional(true) : conditional(false)
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/xlteqy ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xlteqy?
3
+ @x <= @y ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xltnn ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def xltnn?
3
+ r = @x.to_i
4
+ r = "%02d" % [r] if r == r.to_i.to_s
5
+ @x < @reg[r] ? conditional(true) : conditional(false)
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/xlty ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xlty?
3
+ @x < @y ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xmexistq ADDED
@@ -0,0 +1,15 @@
1
+ class XRPN
2
+ def xmexist?
3
+ f = Dir.home + "/.xrpn/data/" + @a
4
+ if File.exist?(f + ".da")
5
+ return "YES (DA)"
6
+ elsif File.exist?(f + ".as")
7
+ return "YES (AS)"
8
+ elsif File.exist?(f + ".pr")
9
+ return "YES (PR)"
10
+ else return "NO"
11
+ end
12
+ end
13
+ end
14
+
15
+ # vim:ft=ruby:
data/cmd/xmfileq ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xmfile?
3
+ return "XMFILE = #{@xmfile}"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xneq0 ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xneq0?
3
+ @x != 0 ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xneqnn ADDED
@@ -0,0 +1,9 @@
1
+ class XRPN
2
+ def xneqnn?
3
+ r = @x.to_i
4
+ r = "%02d" % [r] if r == r.to_i.to_s
5
+ @x != @reg[r] ? conditional(true) : conditional(false)
6
+ end
7
+ end
8
+
9
+ # vim:ft=ruby:
data/cmd/xneqy ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xneqy?
3
+ @x != @y ? conditional(true) : conditional(false)
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xnn ADDED
@@ -0,0 +1,21 @@
1
+ class XRPN
2
+ def xnn (r) # X<> r
3
+ case r.downcase
4
+ when "x"
5
+ @l = @x
6
+ when "y"
7
+ @x, @y = @y, @x
8
+ when "z"
9
+ @x, @z = @z, @x
10
+ when "t"
11
+ @x, @t = @t, @x
12
+ when "l"
13
+ @x, @l = @l, @x
14
+ else
15
+ @reg[r] = 0 if @reg[r] == nil
16
+ @x, @reg[r] = @reg[r], @x
17
+ end
18
+ end
19
+ end
20
+
21
+ # vim:ft=ruby:
data/cmd/xtoa ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xtoa
3
+ @a += @x.to_i.chr
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xy ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xy
3
+ @x, @y = @y, @x
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/cmd/xyzalm ADDED
@@ -0,0 +1,7 @@
1
+ class XRPN
2
+ def xyzalm
3
+ return "XYZALM: No clock, alarm or stopwatch functions are implemented"
4
+ end
5
+ end
6
+
7
+ # vim:ft=ruby:
data/lib/_xrpn_version ADDED
@@ -0,0 +1,5 @@
1
+ def xrpn_version
2
+ puts "XRPN version: 0.95"
3
+ end
4
+
5
+ # vim:ft=ruby:
data/lib/bei ADDED
@@ -0,0 +1,18 @@
1
+ def x2bei (x)
2
+ b = x.to_i
3
+ e = (1000 * (x - b)).to_i
4
+ i = (((1000 * x) - (1000 * x).to_i) * 100).round()
5
+ i = 1 if i == 0
6
+ return b, e, i
7
+ end
8
+
9
+ def bei2x (b, e, i)
10
+ b = b.to_i
11
+ e = e.to_i
12
+ i = 1 if i == 0
13
+ i = i.to_i
14
+ x = b.to_f + (e.to_f / 1000) + (i.to_f / 100000)
15
+ return x
16
+ end
17
+
18
+ # vim:ft=ruby:
data/lib/check ADDED
@@ -0,0 +1,26 @@
1
+ def check(file)
2
+ load Dir.home+"/.xrpn/lib/read_cmd"
3
+ read_cmd
4
+ errors = 0
5
+ if File.exist?(file)
6
+ cfile = File.read(file).split("\n")
7
+ else
8
+ puts "No such file: #{file}"
9
+ exit
10
+ end
11
+ cfile41 = hp_41(cfile.dup)
12
+ cfile41.each_with_index do |line, i|
13
+ if line.match(/^-*[\d\.,e]+$/)
14
+ elsif line.match(/^>?".*"/)
15
+ else
16
+ l1 = line.split[0]
17
+ if not $cmd.include?(l1.downcase)
18
+ puts "Line #{i + 1}: No such command: #{cfile[i]}"
19
+ errors += 1
20
+ end
21
+ end
22
+ end
23
+ puts "Errors = #{errors}"
24
+ end
25
+
26
+ # vim:ft=ruby:
data/lib/conditional ADDED
@@ -0,0 +1,10 @@
1
+ def conditional(t)
2
+ if t
3
+ return "YES"
4
+ else
5
+ @pc += 1 unless $debug and not $sst
6
+ return "NO"
7
+ end
8
+ end
9
+
10
+ # vim:ft=ruby:
data/lib/convert_base ADDED
@@ -0,0 +1,8 @@
1
+ class String
2
+ # works up-to base 36
3
+ def convert_base(from, to)
4
+ self.to_i(from).to_s(to)
5
+ end
6
+ end
7
+
8
+ # vim:ft=ruby: