xrpn 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (291) hide show
  1. checksums.yaml +4 -4
  2. data/bin/xrpn +5 -5
  3. data/lib/xrpn_load.rb +2 -0
  4. data/xrpn.gemspec +2 -3
  5. metadata +3 -302
  6. data/cmd/abs +0 -7
  7. data/cmd/acos +0 -10
  8. data/cmd/adate +0 -12
  9. data/cmd/adateiso +0 -13
  10. data/cmd/add +0 -9
  11. data/cmd/adv +0 -7
  12. data/cmd/agsub +0 -8
  13. data/cmd/aleng +0 -8
  14. data/cmd/almcat +0 -7
  15. data/cmd/almnow +0 -7
  16. data/cmd/anum +0 -10
  17. data/cmd/aoff +0 -7
  18. data/cmd/aon +0 -7
  19. data/cmd/appchr +0 -13
  20. data/cmd/apprec +0 -13
  21. data/cmd/arcl +0 -22
  22. data/cmd/arcli +0 -7
  23. data/cmd/arclrec +0 -30
  24. data/cmd/arot +0 -13
  25. data/cmd/ashf +0 -7
  26. data/cmd/asin +0 -10
  27. data/cmd/asroom +0 -7
  28. data/cmd/asto +0 -21
  29. data/cmd/asub +0 -8
  30. data/cmd/atan +0 -10
  31. data/cmd/atime +0 -26
  32. data/cmd/atime24 +0 -21
  33. data/cmd/atox +0 -9
  34. data/cmd/aview +0 -7
  35. data/cmd/aviewc +0 -7
  36. data/cmd/beep +0 -7
  37. data/cmd/bindec +0 -8
  38. data/cmd/cat +0 -26
  39. data/cmd/cf +0 -7
  40. data/cmd/chs +0 -7
  41. data/cmd/cla +0 -7
  42. data/cmd/clalma +0 -7
  43. data/cmd/clalmx +0 -7
  44. data/cmd/cld +0 -6
  45. data/cmd/clear +0 -7
  46. data/cmd/clfl +0 -13
  47. data/cmd/clk12 +0 -7
  48. data/cmd/clk24 +0 -7
  49. data/cmd/clkeys +0 -7
  50. data/cmd/clock +0 -7
  51. data/cmd/clp +0 -8
  52. data/cmd/clralms +0 -7
  53. data/cmd/clrg +0 -7
  54. data/cmd/clrgx +0 -12
  55. data/cmd/cls +0 -12
  56. data/cmd/clst +0 -10
  57. data/cmd/clx +0 -8
  58. data/cmd/cmdadd +0 -7
  59. data/cmd/cmddel +0 -7
  60. data/cmd/correct +0 -7
  61. data/cmd/cos +0 -10
  62. data/cmd/crflas +0 -9
  63. data/cmd/crfld +0 -9
  64. data/cmd/cube +0 -8
  65. data/cmd/d_r +0 -8
  66. data/cmd/date +0 -8
  67. data/cmd/dateplus +0 -12
  68. data/cmd/ddate +0 -11
  69. data/cmd/dec +0 -7
  70. data/cmd/decbin +0 -8
  71. data/cmd/dechex +0 -8
  72. data/cmd/decoct +0 -8
  73. data/cmd/deg +0 -7
  74. data/cmd/degq +0 -7
  75. data/cmd/delchr +0 -14
  76. data/cmd/delrec +0 -12
  77. data/cmd/divide +0 -9
  78. data/cmd/dmy +0 -7
  79. data/cmd/dot +0 -7
  80. data/cmd/dow +0 -9
  81. data/cmd/drop +0 -7
  82. data/cmd/dropy +0 -7
  83. data/cmd/dse +0 -40
  84. data/cmd/ed +0 -7
  85. data/cmd/emdir +0 -7
  86. data/cmd/emdirx +0 -14
  87. data/cmd/emroom +0 -7
  88. data/cmd/end +0 -9
  89. data/cmd/eng +0 -9
  90. data/cmd/enter +0 -8
  91. data/cmd/exp +0 -9
  92. data/cmd/expx1 +0 -9
  93. data/cmd/fact +0 -9
  94. data/cmd/fc +0 -7
  95. data/cmd/fcc +0 -8
  96. data/cmd/fcs +0 -8
  97. data/cmd/fix +0 -9
  98. data/cmd/fixq +0 -7
  99. data/cmd/flsize +0 -7
  100. data/cmd/frc +0 -8
  101. data/cmd/fs +0 -7
  102. data/cmd/fsc +0 -8
  103. data/cmd/fss +0 -8
  104. data/cmd/geir +0 -11
  105. data/cmd/getas +0 -7
  106. data/cmd/getfile +0 -12
  107. data/cmd/getfilea +0 -11
  108. data/cmd/getkey +0 -9
  109. data/cmd/getkeyx +0 -10
  110. data/cmd/getp +0 -13
  111. data/cmd/getr +0 -13
  112. data/cmd/getrec +0 -8
  113. data/cmd/getrx +0 -17
  114. data/cmd/getsub +0 -7
  115. data/cmd/getweb +0 -12
  116. data/cmd/getx +0 -12
  117. data/cmd/grad +0 -7
  118. data/cmd/gsb +0 -7
  119. data/cmd/gto +0 -23
  120. data/cmd/help +0 -14
  121. data/cmd/hexdec +0 -8
  122. data/cmd/hms +0 -12
  123. data/cmd/hmsminus +0 -14
  124. data/cmd/hmsplus +0 -13
  125. data/cmd/hr +0 -11
  126. data/cmd/inschr +0 -14
  127. data/cmd/insrec +0 -12
  128. data/cmd/int +0 -8
  129. data/cmd/invf +0 -7
  130. data/cmd/isg +0 -40
  131. data/cmd/lastx +0 -8
  132. data/cmd/lbl +0 -6
  133. data/cmd/lift +0 -8
  134. data/cmd/ln +0 -8
  135. data/cmd/ln1x +0 -8
  136. data/cmd/log +0 -8
  137. data/cmd/mdy +0 -7
  138. data/cmd/mean +0 -11
  139. data/cmd/mod +0 -13
  140. data/cmd/multiply +0 -9
  141. data/cmd/oct +0 -7
  142. data/cmd/octdec +0 -8
  143. data/cmd/off +0 -8
  144. data/cmd/on +0 -7
  145. data/cmd/p_r +0 -13
  146. data/cmd/pack +0 -7
  147. data/cmd/page +0 -13
  148. data/cmd/pagedel +0 -8
  149. data/cmd/pageq +0 -7
  150. data/cmd/pageswap +0 -8
  151. data/cmd/pasn +0 -7
  152. data/cmd/pcat +0 -14
  153. data/cmd/pclps +0 -12
  154. data/cmd/percent +0 -9
  155. data/cmd/percentch +0 -9
  156. data/cmd/pi +0 -8
  157. data/cmd/posa +0 -23
  158. data/cmd/posfl +0 -26
  159. data/cmd/pow +0 -9
  160. data/cmd/pprg +0 -27
  161. data/cmd/pprgx +0 -33
  162. data/cmd/pra +0 -7
  163. data/cmd/prflags +0 -8
  164. data/cmd/prompt +0 -8
  165. data/cmd/prp +0 -7
  166. data/cmd/prregs +0 -8
  167. data/cmd/prstk +0 -10
  168. data/cmd/prx +0 -7
  169. data/cmd/prxm +0 -21
  170. data/cmd/pse +0 -7
  171. data/cmd/psize +0 -7
  172. data/cmd/purfl +0 -14
  173. data/cmd/r_d +0 -8
  174. data/cmd/r_p +0 -18
  175. data/cmd/rad +0 -7
  176. data/cmd/rand +0 -10
  177. data/cmd/rcl +0 -23
  178. data/cmd/rclaf +0 -7
  179. data/cmd/rclflag +0 -16
  180. data/cmd/rclpt +0 -8
  181. data/cmd/rclpta +0 -16
  182. data/cmd/rclsw +0 -7
  183. data/cmd/rdn +0 -7
  184. data/cmd/recip +0 -8
  185. data/cmd/regmove +0 -18
  186. data/cmd/regswap +0 -19
  187. data/cmd/reload +0 -7
  188. data/cmd/reszfl +0 -7
  189. data/cmd/rnd +0 -8
  190. data/cmd/root +0 -9
  191. data/cmd/rtn +0 -12
  192. data/cmd/rubycmd +0 -7
  193. data/cmd/runsw +0 -7
  194. data/cmd/rup +0 -7
  195. data/cmd/saveas +0 -7
  196. data/cmd/savep +0 -7
  197. data/cmd/saver +0 -24
  198. data/cmd/saverx +0 -31
  199. data/cmd/savex +0 -10
  200. data/cmd/savexm +0 -7
  201. data/cmd/sci +0 -9
  202. data/cmd/sdev +0 -11
  203. data/cmd/seekpt +0 -10
  204. data/cmd/seekpta +0 -7
  205. data/cmd/sep +0 -7
  206. data/cmd/setaf +0 -7
  207. data/cmd/setsw +0 -7
  208. data/cmd/sf +0 -7
  209. data/cmd/shellcmd +0 -7
  210. data/cmd/sign +0 -19
  211. data/cmd/sin +0 -10
  212. data/cmd/size +0 -7
  213. data/cmd/sizeq +0 -7
  214. data/cmd/sminus +0 -20
  215. data/cmd/splus +0 -20
  216. data/cmd/sqr +0 -8
  217. data/cmd/sqrt +0 -8
  218. data/cmd/sreg +0 -7
  219. data/cmd/sregq +0 -7
  220. data/cmd/stdivide +0 -22
  221. data/cmd/stmultiply +0 -22
  222. data/cmd/sto +0 -21
  223. data/cmd/stoflag +0 -13
  224. data/cmd/stop +0 -7
  225. data/cmd/stopsw +0 -7
  226. data/cmd/stplus +0 -22
  227. data/cmd/stsubtract +0 -22
  228. data/cmd/subtract +0 -9
  229. data/cmd/sw +0 -7
  230. data/cmd/swap +0 -7
  231. data/cmd/swpt +0 -7
  232. data/cmd/tan +0 -10
  233. data/cmd/tenx +0 -8
  234. data/cmd/time +0 -8
  235. data/cmd/tx +0 -7
  236. data/cmd/version +0 -7
  237. data/cmd/view +0 -7
  238. data/cmd/writefile +0 -12
  239. data/cmd/xeq +0 -21
  240. data/cmd/xeq0 +0 -7
  241. data/cmd/xeqnn +0 -9
  242. data/cmd/xeqy +0 -7
  243. data/cmd/xf +0 -20
  244. data/cmd/xgt0 +0 -7
  245. data/cmd/xgteq0 +0 -7
  246. data/cmd/xgteqnn +0 -9
  247. data/cmd/xgteqy +0 -7
  248. data/cmd/xgtnn +0 -9
  249. data/cmd/xgty +0 -7
  250. data/cmd/xlt0 +0 -7
  251. data/cmd/xlteq0 +0 -7
  252. data/cmd/xlteqnn +0 -9
  253. data/cmd/xlteqy +0 -7
  254. data/cmd/xltnn +0 -9
  255. data/cmd/xlty +0 -7
  256. data/cmd/xmexistq +0 -15
  257. data/cmd/xmfileq +0 -7
  258. data/cmd/xneq0 +0 -7
  259. data/cmd/xneqnn +0 -9
  260. data/cmd/xneqy +0 -7
  261. data/cmd/xnn +0 -21
  262. data/cmd/xtoa +0 -7
  263. data/cmd/xy +0 -7
  264. data/cmd/xyzalm +0 -7
  265. data/lib/_xrpn_version.rb +0 -5
  266. data/lib/bei.rb +0 -18
  267. data/lib/check.rb +0 -26
  268. data/lib/conditional.rb +0 -10
  269. data/lib/convert_base.rb +0 -8
  270. data/lib/debug_mode.rb +0 -124
  271. data/lib/dtparse.rb +0 -10
  272. data/lib/error.rb +0 -10
  273. data/lib/fact.rb +0 -7
  274. data/lib/getpt.rb +0 -7
  275. data/lib/help.rb +0 -12
  276. data/lib/hp_41.rb +0 -83
  277. data/lib/ind.rb +0 -21
  278. data/lib/load_xm.rb +0 -28
  279. data/lib/locate_prg.rb +0 -32
  280. data/lib/numeric.rb +0 -62
  281. data/lib/numformat.rb +0 -12
  282. data/lib/optparse.rb +0 -23
  283. data/lib/read_cmd.rb +0 -12
  284. data/lib/read_state.rb +0 -6
  285. data/lib/save_state.rb +0 -18
  286. data/lib/save_xm.rb +0 -5
  287. data/lib/setpt.rb +0 -5
  288. data/lib/string.rb +0 -28
  289. data/lib/theme_dark.rb +0 -10
  290. data/lib/theme_light.rb +0 -10
  291. data/lib/xrpn_class.rb +0 -34
data/cmd/xgty DELETED
@@ -1,7 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
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 DELETED
@@ -1,9 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
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 DELETED
@@ -1,9 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
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 DELETED
@@ -1,15 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
1
- class XRPN
2
- def xmfile?
3
- return "XMFILE = #{@xmfile}"
4
- end
5
- end
6
-
7
- # vim:ft=ruby:
data/cmd/xneq0 DELETED
@@ -1,7 +0,0 @@
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 DELETED
@@ -1,9 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
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 DELETED
@@ -1,21 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
1
- class XRPN
2
- def xtoa
3
- @a += @x.to_i.chr
4
- end
5
- end
6
-
7
- # vim:ft=ruby:
data/cmd/xy DELETED
@@ -1,7 +0,0 @@
1
- class XRPN
2
- def xy
3
- @x, @y = @y, @x
4
- end
5
- end
6
-
7
- # vim:ft=ruby:
data/cmd/xyzalm DELETED
@@ -1,7 +0,0 @@
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.rb DELETED
@@ -1,5 +0,0 @@
1
- def xrpn_version
2
- puts "XRPN version: 0.95"
3
- end
4
-
5
- # vim:ft=ruby:
data/lib/bei.rb DELETED
@@ -1,18 +0,0 @@
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.rb DELETED
@@ -1,26 +0,0 @@
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.rb DELETED
@@ -1,10 +0,0 @@
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.rb DELETED
@@ -1,8 +0,0 @@
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:
data/lib/debug_mode.rb DELETED
@@ -1,124 +0,0 @@
1
- def debug_mode
2
- prompt = TTY::Prompt.new
3
- loop do
4
- if $prompt
5
- @line = prompt.ask(":")
6
- break
7
- else
8
- puts "─" * 30
9
- @p.prstk
10
- print "> "
11
- @ln = STDIN.getch
12
- while IO.select([STDIN], [], [], 0) != nil # Flush STDIN (remove control chars)
13
- STDIN.getch
14
- end
15
- if ["+", "-", "*", "/", "%"].include?(@ln)
16
- print "\e[32m" + @ln + "\e[0m\n"
17
- @ln = [@ln]
18
- @line = hp_41(@ln)[0]
19
- break
20
- elsif @ln == "\r" # A simple ENTER
21
- @line = "lift"
22
- puts "\n"
23
- break
24
- end
25
- print "\e[1G\e[K" # Clears from the beginning of line (removes getch prompt)
26
- @line = prompt.ask(">", value: @ln)
27
- unless @line == nil or @line.length == 1
28
- @line = [@line]
29
- @line = hp_41(@line)[0]
30
- end
31
- end
32
- case @line
33
- when "q" # Quit
34
- puts "\n"
35
- exit
36
- when "Q" # Save and quit
37
- save_state()
38
- puts "\n"
39
- exit
40
- when /> .*/
41
- state = @line.sub(/> /, '')
42
- save_state(state)
43
- when /< .*/
44
- state = @line.sub(/< /, '')
45
- read_state(state)
46
- when "c"
47
- system("clear")
48
- when "C"
49
- @p.x = 0.0
50
- @p.y = 0.0
51
- @p.z = 0.0
52
- @p.t = 0.0
53
- @p.l = 0.0
54
- @p.a = ""
55
- @p.deg = "deg"
56
- @p.i = 4
57
- @p.s = 6
58
- @p.srg = 11
59
- @p.reg = {}
60
- @p.flg = {}
61
- system("clear")
62
- when "R" # Reload all commands from the cmd directory
63
- read_cmd
64
- puts "Commands reloaded."
65
- when "l" # Show current line
66
- @line = @p.prg[@p.pg][@p.pc]
67
- puts "Line #{@p.pc + 1}: \"#{@line}\"" # Line 1 is @p.prg[@p.pg][0]
68
- when "n" # Show next line
69
- if @p.pc + 1 > @p.prg[@p.pg].length
70
- puts "End of program"
71
- else
72
- @line = @p.prg[@p.pg][@p.pc + 1]
73
- puts "Line #{@p.pc + 2}: \"#{@line}\"" # Line 1 is @p.prg[@p.pg][0]
74
- end
75
- when "p" # Show previous line
76
- if @p.pc - 1 < 0
77
- puts "Beginning of program"
78
- else
79
- @line = @p.prg[@p.pg][@p.pc - 1]
80
- puts "Line #{@p.pc}: \"#{@line}\"" # Line 1 is @p.prg[@p.pg][0]
81
- end
82
- when "S" # Go to next line without executing it
83
- @p.pc += 1
84
- if @p.pc > @p.prg[@p.pg].length
85
- puts "End of program"
86
- else
87
- @line = @p.prg[@p.pg][@p.pc + 1]
88
- puts "Line #{@p.pc + 2}: \"#{@line}\"" # Line 1 is @p.prg[@p.pg][0]
89
- end
90
- when "s" # Single-step the next program line
91
- @p.pc += 1
92
- if @p.pc == @p.prg[@p.pg].length
93
- @line = "END"
94
- break
95
- end
96
- @line = @p.prg[@p.pg][@p.pc]
97
- puts "Line #{@p.pc + 1}: #{@line}" # Line 1 is @p.prg[@p.pg][0]
98
- $sst = true
99
- break
100
- when "b" # Back-step one line
101
- @p.pc -= 1 unless @p.pc == 0
102
- when /^\+\+ /
103
- @p.prg[@p.pg].insert(@p.pc + 1, @line.sub(/^\+\+ /, ''))
104
- when "--"
105
- @p.prg[@p.pg].delete_at(@p.pc)
106
- when nil # A simple ENTER
107
- @line = "lift"
108
- break
109
- when "r" # End debug mode
110
- @p.pc += 1
111
- @line = @p.prg[@p.pg][@p.pc]
112
- @line = "end" if @line == nil
113
- $debug = false
114
- $sst = false
115
- break unless @p.flg["44"]
116
- else
117
- break unless @p.flg["44"]
118
- end
119
- end
120
- $prompt = false
121
- end
122
-
123
-
124
- # vim:ft=ruby:
data/lib/dtparse.rb DELETED
@@ -1,10 +0,0 @@
1
- def dtparse(date)
2
- @flg["31"] ? d = date.to_i : m = date.to_i
3
- @flg["31"] ? m = ((date - date.to_i) * 100).to_i : d = ((date - date.to_i) * 100).to_i
4
- y = (((date * 100) - (date * 100).to_i) * 10000).to_i
5
- dt = "#{y.to_s}-#{m.to_s}-#{d.to_s}"
6
- return Date.parse(dt)
7
- end
8
-
9
-
10
- # vim:ft=ruby:
data/lib/error.rb DELETED
@@ -1,10 +0,0 @@
1
- def error(msg)
2
- if @p.flg["25"]
3
- @p.flg["25"] = false
4
- else
5
- puts msg
6
- @p.stop
7
- end
8
- end
9
-
10
- # vim:ft=ruby:
data/lib/fact.rb DELETED
@@ -1,7 +0,0 @@
1
- class Integer
2
- def fact
3
- (1..self).reduce(:*) || 1
4
- end
5
- end
6
-
7
- # vim:ft=ruby:
data/lib/getpt.rb DELETED
@@ -1,7 +0,0 @@
1
- def getpt
2
- r = @xmcont[0][3].to_i + 1
3
- c = (@xmcont[0][3].frc * 1000).to_i
4
- return r, c
5
- end
6
-
7
- # vim:ft=ruby:
data/lib/help.rb DELETED
@@ -1,12 +0,0 @@
1
- def help
2
- puts <<HELPTEXT
3
- XRPN is a stack-based programming language. It uses Reverse Polish Notation for calculations.
4
- The language is a superset of FOCAL, implementing the full set of HP-41CX calculator commands.
5
- XRPN is on-the-fly extensible. Language functions can be upgraded or implemented while programs are running.
6
- It runs programs in text files or manually in debug mode (if no text file is supplied or when a program stops)
7
- XRPN implements indirect adressing, self-modification and features well beyond the FOCAL language.
8
- For detailed information, visit the GitHub page: https://github.com/isene/xrpn
9
- HELPTEXT
10
- end
11
-
12
- # vim:ft=ruby:
data/lib/hp_41.rb DELETED
@@ -1,83 +0,0 @@
1
- def hp_41 (a)
2
- a.map!{|x| x.sub( /^\s+/, "" )} # Remove spaces at start of line
3
- a.map!{|x| x.sub( /^\d\d+[^0-9.]/, "" )} # Remove line numbers from program
4
- a.map!{|x| x.sub( /\s+$/, "" )} # Remove trailing spaces
5
- a.map!{|x| x.sub( /\s\s+/, "" )} # Remove multiple spaces
6
- a.map!{|x| x.sub( /([a-zA-Z ]*)/, &:downcase)} # Downcase everything (use the /i below here)
7
- a.map!{|x| x.sub( /ENTER\^/i, "enter" )}
8
- a.map!{|x| x.sub( /R\^/i, "rup" )}
9
- a.map!{|x| x.sub( /X\^2/i, "sqr" )}
10
- a.map!{|x| x.sub( /X\*\*2/i, "sqr" )}
11
- a.map!{|x| x.sub( /^E(\d+)/i, '1e\1' )}
12
- a.map!{|x| x.sub( /1\/X/i, "recip" )}
13
- a.map!{|x| x.sub( /HMS\+/i, "hmsplus" )}
14
- a.map!{|x| x.sub( /HMS-/i, "hmsminus" )}
15
- a.map!{|x| x.sub( /DATE\+/i, "dateplus" )}
16
- a.map!{|x| x.sub( /Σ\+/i, "splus" )}
17
- a.map!{|x| x.sub( /Σ-/i, "sminus" )}
18
- a.map!{|x| x.sub( /S\+/i, "splus" )}
19
- a.map!{|x| x.sub( /S-/i, "sminus" )}
20
- a.map!{|x| x.sub( /SIGMA\+/i, "splus" )}
21
- a.map!{|x| x.sub( /SIGMA-/i, "sminus" )}
22
- a.map!{|x| x.sub( /SIGMAREG/, "sreg" )}
23
- a.map!{|x| x.sub( /CLSIGMA/, "cls" )}
24
- a.map!{|x| x.sub( /STO?\+/i, "stplus" )}
25
- a.map!{|x| x.sub( /STO?-/i, "stsubtract" )}
26
- a.map!{|x| x.sub( /STO?\*/i, "stmultiply" )}
27
- a.map!{|x| x.sub( /STO?\//i, "stdivide" )}
28
- a.map!{|x| x.sub( /%CH/i, "perch" )}
29
- a.map!{|x| x.sub( /Y\^X/i, "pow" )}
30
- a.map!{|x| x.sub( /Y\*\*X/i, "pow" )}
31
- a.map!{|x| x.sub( /LN1\+X/i, "ln1x" )}
32
- a.map!{|x| x.sub( /E\^X-1/i, "expx1" )} # Must come before next
33
- a.map!{|x| x.sub( /E\^X/i, "exp" )}
34
- a.map!{|x| x.sub( /E\*\*X-1/i, "expx1" )} # Must come before next
35
- a.map!{|x| x.sub( /E\*\*X/i, "exp" )}
36
- a.map!{|x| x.sub( /10\^X/i, "tenx" )}
37
- a.map!{|x| x.sub( /10\*\*X/i, "tenx" )}
38
- a.map!{|x| x.sub( /P-R/i, "p_r" )}
39
- a.map!{|x| x.sub( /P->R/i, "p_r" )}
40
- a.map!{|x| x.sub( /R-P/i, "r_p" )}
41
- a.map!{|x| x.sub( /R->P/i, "r_p" )}
42
- a.map!{|x| x.sub( /D-R/i, "d_r" )}
43
- a.map!{|x| x.sub( /D->R/i, "d_r" )}
44
- a.map!{|x| x.sub( /R-D/i, "r_d" )}
45
- a.map!{|x| x.sub( /R->D/i, "r_d" )}
46
- a.map!{|x| x.sub( /X<>Y/i, "xy" )}
47
- a.map!{|x| x.sub( /X<>F/i, "xf" )}
48
- a.map!{|x| x.sub( /X<>/i, "xnn" )}
49
- a.map!{|x| x.sub( /X<>NN/i, "xnn" )}
50
- a.map!{|x| x.sub( /FC\?C/i, "fcc?" )}
51
- a.map!{|x| x.sub( /FS\?C/i, "fsc?" )}
52
- a.map!{|x| x.sub( /X=Y\?/i, "xeqy?" )}
53
- a.map!{|x| x.sub( /X#Y\?/i, "xneqy?" )}
54
- a.map!{|x| x.sub( /X!=Y\?/i, "xneqy?" )}
55
- a.map!{|x| x.sub( /X<>Y\?/i, "xneqy?" )}
56
- a.map!{|x| x.sub( /X<Y\?/i, "xlty?" )}
57
- a.map!{|x| x.sub( /X<=Y\?/i, "xlteqy?" )}
58
- a.map!{|x| x.sub( /X>Y\?/i, "xgty?" )}
59
- a.map!{|x| x.sub( /X>=Y\?/i, "xgteqy?" )}
60
- a.map!{|x| x.sub( /X=0\?/i, "xeq0?" )}
61
- a.map!{|x| x.sub( /X#0\?/i, "xneq0?" )}
62
- a.map!{|x| x.sub( /X!=0\?/i, "xneq0?" )}
63
- a.map!{|x| x.sub( /X<>0\?/i, "xneq0?" )}
64
- a.map!{|x| x.sub( /X<0\?/i, "xlt0?" )}
65
- a.map!{|x| x.sub( /X<=0\?/i, "xlteq0?" )}
66
- a.map!{|x| x.sub( /X>0\?/i, "xgt0?" )}
67
- a.map!{|x| x.sub( /X>=0\?/i, "xgteq0?" )}
68
- a.map!{|x| x.sub( /X=NN\?/i, "xeqnn?" )}
69
- a.map!{|x| x.sub( /X#NN\?/i, "xneqnn?" )}
70
- a.map!{|x| x.sub( /X!=NN\?/i, "xneqnn?" )}
71
- a.map!{|x| x.sub( /X<>NN\?/i, "xneqnn?" )}
72
- a.map!{|x| x.sub( /X<NN\?/i, "xltnn?" )}
73
- a.map!{|x| x.sub( /X<=NN\?/i, "xlteqnn?" )}
74
- a.map!{|x| x.sub( /X>NN\?/i, "xgtnn?" )}
75
- a.map!{|x| x.sub( /X>=NN\?/i, "xgteqnn?" )}
76
- a.map!{|x| x.sub( /T\+X/i, "tx" )}
77
- a.map!{|x| x.sub( /GOTO/i, "gto" )}
78
- a.delete("")
79
- a.compact!
80
- return a
81
- end
82
-
83
- # vim:ft=ruby:
data/lib/ind.rb DELETED
@@ -1,21 +0,0 @@
1
- def ind(l3)
2
- case l3
3
- when "x"
4
- l2 = @p.x.to_i.to_s
5
- when "y"
6
- l2 = @p.y.to_i.to_s
7
- when "z"
8
- l2 = @p.z.to_i.to_s
9
- when "t"
10
- l2 = @p.t.to_i.to_s
11
- when "l"
12
- l2 = @p.l.to_i.to_s
13
- else
14
- l2 = @p.reg[l3].to_i.to_s
15
- end
16
- l2 = "%02d" % [l2] if l2 == l2.to_i.to_s
17
- return l2
18
- end
19
-
20
-
21
- # vim:ft=ruby:
data/lib/load_xm.rb DELETED
@@ -1,28 +0,0 @@
1
- def load_xm(f, pt=nil) # Raw file name and pointer
2
- f = Dir.home + "/.xrpn/data/" + f
3
- fl = [f + ".da", f + ".as"]
4
- hit = false
5
- fl.each do |file|
6
- if File.exist?(file)
7
- @xmcont = JSON.parse(File.read(file))
8
- @xmfile = file
9
- @xmcont[0][0] = file
10
- unless pt == nil
11
- @xmcont[0][3] = pt
12
- save_xm
13
- end
14
- @xmcont[0][3] = 0.0 if @xmcont[0][3] < 0.0
15
- @xmcont[0][3] = @xmcont.length.to_f - 2 if @xmcont[0][3] > @xmcont.length + 2
16
- @xmcont[0][1] = "DA" if file.match(/da$/)
17
- @xmcont[0][1] = "AS" if file.match(/as$/)
18
- hit = true
19
- end
20
- end
21
- if hit
22
- puts "Loaded XM file: #{@a} (#{@xmcont[0][0]})"
23
- else
24
- puts "No such XM file: #{@a}"
25
- end
26
- end
27
-
28
- # vim:ft=ruby:
data/lib/locate_prg.rb DELETED
@@ -1,32 +0,0 @@
1
- def locate_prg (l)
2
- lbl = "lbl #{l}"
3
- page = nil
4
- pos = nil
5
- prgm = []
6
- if lbl.match(/".*"/)
7
- @prg.each_index do |p|
8
- pos = @prg[p].index {|e| e == lbl}
9
- page = p unless pos == nil
10
- break if pos != nil
11
- end
12
- else
13
- @prg[@pg][@pc..-1].each_with_index do |e, i|
14
- pos = i + @pc if e == lbl
15
- break if pos != nil
16
- end
17
- pos = @prg[@pg].index {|e| e == lbl} if pos == nil
18
- page = @pg
19
- end
20
- if pos != nil
21
- l = pos
22
- until l == @prg[page].length do
23
- line = @prg[page][l]
24
- prgm.push(line)
25
- break if line == "END"
26
- l += 1
27
- end
28
- end
29
- return page, pos, prgm
30
- end
31
-
32
- # vim:ft=ruby:
data/lib/numeric.rb DELETED
@@ -1,62 +0,0 @@
1
- class Numeric
2
-
3
- def frc
4
- f = BigDecimal(self.to_s) - BigDecimal(self.to_s).to_i
5
- return BigDecimal(f.to_s).to_s('F').to_f
6
- end
7
-
8
- def to_rad
9
- self * Math::PI / 180
10
- end
11
- def to_radg
12
- self * Math::PI / 200
13
- end
14
- def to_deg
15
- self * 180 / Math::PI
16
- end
17
- def to_grad
18
- self * 200 / Math::PI
19
- end
20
-
21
- def to_num(n=3, i=2, g=1, c=false, p=false)
22
- # n: Threshold for when to show exponent
23
- # i: Number og digits after the period
24
- # g: Exponent grouping g=3 would always show exponent as a multiple of 3
25
- # c: Use comma instead of period (European format)
26
- # p: Separator per 3 digits (period if c=false, space when c=true)
27
- # e: Exponent
28
- # ge: Grouped exponent
29
- # x: Absolute value of number less exponent
30
- # s: String to be displayed
31
- n = g if g > n
32
- self != 0 ? e = Math::log10(self.abs).floor : e = 0
33
- ge = g*(e/g).to_i
34
- x = self.abs
35
- x = (x / 10 ** ge) if e.abs >= n
36
- s = x.to_i.to_s
37
- self < 0 ? m = "-" : m = ""
38
- s.sub!(/-/, '')
39
- f = x.frc.to_s[0..(i + 1)].to_f
40
- f = f.to_s.sub(/../, '')
41
- i > 0 ? s.sub!(/(\d*\.)(\d{,#{i}}).*/, '\1\2') : s.sub!(/(\d*).*/, '\1')
42
- if e.abs >= n # If exponent kicks in
43
- s += "." + f.ljust(i, "0")
44
- s += "e"
45
- if ge < 0
46
- s += "-"
47
- s.sub!(/0\.(\d)/, '\1.')
48
- end
49
- ge = ge.abs
50
- s += "%02d" % [ge]
51
- else # No exponent
52
- o = "," if p and not c
53
- o = " " if p and c
54
- s.gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{o}") if p
55
- s += "." + f.to_s.ljust(i, "0")
56
- end
57
- s.sub!(/\./, ',') if c
58
- return m + s
59
- end
60
- end
61
-
62
- # vim:ft=ruby:
data/lib/numformat.rb DELETED
@@ -1,12 +0,0 @@
1
- def numformat(n)
2
- return n unless n.is_a? Numeric
3
- return "Inf" if n.infinite?
4
- if n.to_f.nan?
5
- n = "Not a number"
6
- return n
7
- end
8
- return n.to_num(@s,@i,@g,!@flg["28"],@flg["29"])
9
- end
10
-
11
-
12
- # vim:ft=ruby: