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/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: