1536c
# GC.start              # g     # antei ?
.
1532c
# GC.start              # g 
.
1527c
#  fib(20)
  fib(3)
#  3 + 382
.
1504c
#       fl.delete_at(n) && redo if fl[n] && fl[n].resume(n) && 0 == n
.
1492,1501c
#######        mn = 0 > fis[0] ? -1 : n
#       if fis[1].resume(n) && 0 <= fis[0]
####### if fis[1].resume(mn) # && 0 <= fis[0]
#       end

#      ise[i_i_d].reject!.with_index { |fis, n|
      ise[i_i_d].delif_c(1) { |fis, n|
#        n = 0 > fis[0] ? -1 : n
        0 > fis[0] && n = -1
#       fis[1].resume(n) && 0 <= fis[0]
        fis[1].resume(n)
      }

.
1490d
1481,1487c
#         if 0 <= pfl[0]
#           ise[i_i_f]<< fls(pfl[0])      # p 
#         end
#         true
.
1479d
1473,1477c
      ise[i_i_s].reject! { |pfl|        # Inspired by : RobertDoggett ? http://microware.com/# , Professor TAKAZAWA Yosimitu http://mu.ice.uec.ac.jp/~takazawa/
#     ise[i_i_s].delif_c(1) { |pfl|
.
1471c
####### if pfl
#######   ise[i_i_d]<< [pfl[0], isfl(pfl[1])]     # p 
#         if 0 <= pfl[0]
#           ise[i_i_f]<< fls(pfl[0])      # p 
#         end
.
1463c
        stack.p = rg['sp']
.
1445a

#       rg['ctr', 1] = rg['ctr', 1].abs         # cp 
.
1441,1444c
#      if ise[i_i_f].empty?
      if ise[i_i_d].empty? || (1 == ise[i_i_d].size && 0 > ise[i_i_d][-1][0])
.
1430,1431c

#         rg['ctr', 1] *= -1    # kakezan
          rg.ps(-rg.pg)         # cp 

#         if ifj.(rg['sym'])
#           stu.(rg['pc'] + imem.getarg_sbx(rg['cop'], rg['sym'])       # c 
#           stu.(rg['pc'] + 1, rg['sym', -1])   # c 
#         end
.
1421,1427c
#         pco[0] = rg['pc'] if ifj.(rg['sym'])  # p 
          (pco[0] = rg['pc']; pctj<< pco[0] + 1) if ifj.(rg['sym'])       # p     # c 
.
1416,1417c
#         ist.call
#         ist.(rg['pc']) if istm.call   # c 
          ist.(rg['pc']) if pctj.pop != rg['pc'] && istm.call   # c 
.
1414d
1409,1410c
#      if 0 <= rg['ctr', 1]
#       opg.call
        opg.(rg['pc'])          # c     # cp 
#       @@opg.(irep, rg, imem)  # c 
.
1405c
#      }
.
1397,1403c
#      0.step(0) { |n|
#       ise[i_i_f].delete_at(n) && redo if ise[i_i_f][n] && ise[i_i_f][n].resume(n) && 0 == n
.
1390,1391c
#    ifj = -> (sym) {?J == sym.to_s[0]}              # l     # q 
#    ifs = -> (sym) {[:ENTER, :SEND, :RETURN, :NOP].include?(sym)}   # l 
    ifj = ->(sy) {?J == sy.to_s[0]}  # l     # q 
    ifs = ->(sy) {[:ENTER, :SEND, :RETURN, :NOP].include?(sy)}       # l 

#   stu = ->(pcl, sy) {              # l 
#     opg.(pcl)                 # c 
#     ist.(pcl) unless (ifj.(sy) || ifs.(sy))   # c 3 
#     pcoj.call
#   }
.
1383,1387c
      true
    }
    ist = ->(pcl, po = 0) {  # l 
#      ise[i_i_s]<< [0 > rg['ctr', 1] ? -rg['pc'] : rg['pc'], rg.to_a] # p     # cp 
#      ise[i_i_s]<< [0 > rg.pg ? -pcl : pcl, rg.to_a]          # p     # cp 
      ise[i_i_s]<< [0 > rg.pg ? -pcl : pcl, Rg.new(rg.to_a)]   # p     # cp 
#     ise[i_i_s]<< [0 > rg['ctr', 1] ? -pcl : pcl, rg.ss(po)]  # p     # cp 
.
1381c
#       pfl = nil
.
1378,1379c
          ise[i_i_d]<< pfl                        # p 
.
1373,1375c
            ise[i_i_d]<< pfl                      # p 
#           next
            next false
.
1370,1371c
#           ise[i_i_f]<< fls(pcf.abs)             # p     # cp 
.
1362,1366c
    istm = -> {              # l 
#      unless ise[i_i_d].empty?
#       pfl = ise[i_i_d].pop
      if pfl = ise[i_i_d].pop
.
1354,1356c
#   @@opg = ->(irep, rg, imem) {     # l 
#    opg = -> {                              # l 
    opg = ->(pcl) {                  # l 
#      c, sym = @@opf.(irep, rg['pc'], imem)    # c 
      c, sym = @@opf.(irep, pcl)                # c 
.
1328c
          callinfo.p -= 1
.
1322c
          callinfo.p -= 1
.
1315c
          callinfo.p -= 1
.
1312d
1308d
1306c
        if 0 == callinfo.p
.
1295,1296c
#    rg = Rg.new([['ctr', 1], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
    rg = Rg.new([['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
.
1293c
#    i_i_f = 0; i_i_d = 1; i_i_s = 2
    i_i_d = 0; i_i_u = 1; i_i_s = 2
.
1289c
    pctj = []
.
1285,1287c
#    fl = []
.
1262,1268c
#       r = (true == fb.resume ? true : false) # && r
        ri ||= (true == fb || true == fb.resume ? fb = true : false)
        m = Fiber.yield ri && rf
#       Fiber.yield r
        rf = fl.resume(m.abs) if 0 <= m # || 0 <= pc
.
1258,1259c
    fl = fls(pc.abs) # if 0 <= pc    # cp 
#    r = false
    ri, rf = false
.
1254,1256c
#   rg.to_s             # fuguai taisaku mruby 70410200
#    rg = Rg.new rg
    pc = rg['pc']
    sl = @Slp
#    pc = rg.assoc('pc')[1]
.
1249c
#    sym = OPTABLE_SYM[imem.get_opcode(cop)]
    sym = OPTABLE_SYM[(rou = @@Rou).get_opcode(cop)]
.
1241d
1207c
        callinfo.p += 1
.
1202c
        callinfo.p += 1
.
1197c
        callinfo.p += 1
.
1169d
1158d
1140,1141d
1132c
#       sp = [sp].flatten
        sp = [sb].flatten
.
1117c
#    Fiber.new {        ##
    Fiber.new { |thi = 0|       ##
.
1115c
#    thi = 0    ##
.
1109a
#         kfv.empty? lopa.push(k, fv) : lopa += kfv
.
1108c
#         k && lopa.push(*fv)
          lopa.push(*fv)
.
1104d
1097,1099c
#             fv[oi] = imem.ta(fv[oi], cop) if oi <= ht = fv.hgt
              fv[oi] = ta.(fv[oi]) if oi <= ht = fv.hgt              # c 
#             fv[oi] ? (fv = [thl[oi], fv[oi]]) : k = nil
              fv = fv[oi] ? [thl[oi], fv[oi]] : []
.
1091,1093c
#             fv = [thl[oi], imem.ta(fv[oi], cop), thl[oi + 1], []]     # t 
              fv = [thl[oi], ta.(fv[oi]), thl[oi + 1], []]      # c t 
.
1080a
    sb = sp
    ta = ->(ta) {    # l 
      [ta[0] || (sb = ~ [sp].flatten[0]; :getarg_a), ta[1] || cop][
        0 .. ta[2] || 1] }
.
1073,1074c
#     printf("Unkown code %s \n", OPTABLE_SYM[@Rou.get_opcode(cop)])
.
1062,1063c
#    pcabs = pc.abs     # cp 
#    pc1 = pcabs + 1    # cp 
    pc1 = (pcabs = pc.abs) + 1  # cp 

.
1059d
1047c
#               pr || (pr, sy, mt = imem.fml('st', sym)[1 .. -1])
                pr || (pr, sy = imem.fml('st', sym)[1 .. -1]
                        ?_ == pr.to_s[1] || (mt, pr = [pr, imem.l__s__send]))   # q 
.
1043,1045d
1033,1034c

#         if flg[0] && 0 > (sp || s.p = sp = pl[i_sp].flatten[0])
#         flg[0] && s.ps([pl[i_sp]].flatten[0]) { |i|   # && 0 <= sp
          flg[0] && s.ps(pl[i_sp].flatten[0]) { |i|     # && 0 <= sp
            0 > i ? (r[1] = r[0]; flg[1] = true; ~ i) : i
          }
.
1027d
1020d
991,995c
#         s.s.hgt <= mx && mx = s.s.hgt
#         s.s.hgt <= mx = 0xf && mx = s.s.hgt
#       s.size < mx = 0xf && mx = s.size - 1
#       (mx = 0xf) > (mx |= s.size << 7) >> 7 && mx = (mx >> 7) - 1; mx &= 0x7f                # .b 
###     (mx = 0xf) > (mx |= s.size - 1 << 8) >> 8 && mx >>= 8; mx &= 0xff              # .b 
        (rs[1] = s.size) < mx = 0xf && mx = rs[1] - 1
#       sz.step(mx) { |n| plr<< lm.(isr0, s[n])}  # p c 
        (sz .. mx).each { |n| plr<< lm.(s[n])}    # p c 
#       s.s.empty? ? @Slp.slp(0) : plr += lm.(isr0, s[plr.size, 0xf])           # c 
.
981c
#    mx = 0xf
.
974,975c
#     sp, sz, isr0, r0, r1, lm, sy = [][0]
#    pl, sp, mt, isr0, r, r0, r1, sym, sy, pr, sz = nil
    pl, mt, isr0, r, r0, r1, sym, sy, pr, sz = nil
.
968d
952,954c
    r = [pl[lpl.afl(thl[0], ?i)]]       # q 
    r1 = pl[lpl.afl(thl[1], ?i)]        # q 
    r<< r1 if knid(pl[lpl.afl('ctr', ?i)][0], :Array) && lpl.ckth(r1, 3)  # p     # q 

#   r.map { |v| v[1] = v[-1]}
#   r = r.map { |v| v[1] = v[-1]}       # higokan ? mruby 70410200
#    [pl[lpl.afl('sym', ?i)].to_sym,    # q 
#       *[r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}]
.
950d
932,933d
921c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8    # www.monami-ya.jp
.
868c
#    GC.start   # g     # antei ?
.
768,850d
748,749c
#    @a.assoc('ctr')[1]
    @p
.
743,744c
#    @a.assoc('ctr')[1] = i
    @p = i
.
739c
    @a.assoc(k)[i] = v
.
715a
# def ss(po = 0, ctr = nil)
#   @a.map { |v| k = v[0]
#     if ! 'ctr' == k # v[0]
#       v = [k, v[self.assoc('ctr')[1]]]
#       v[1] += po if 'pc' == k
#     end
#     v
#   }
# end

.
682c
#   @p = i
#   (i == @p) && return(i)      # higokan ? mruby 70410200
    return i if i == @p
#   @p = 0 > i ? ~ i : i
    @p = b ? yield(i) : i
.
678,679c
# def ps(i)
  def ps(i, &b)
#   id = self.object_id
.
672,674c
# def pg() @p      end
# def pi() @p += 1 end
# def pd() @p -= 1 end
.
603c
#     GC.start  # g     # antei ?
.
596,597d
568,569c
#       arf ||= ckth(th[idx], 2)
#       th[idx] = pl_eg(pc, thl[idx]) if arf
        th[idx] = pl_eg(pc, thl[idx]) if arf ||= ckth(th[idx], 2)
.
551,552c
#   idx = 0    ##
    th = ((idx = 0) ... thl.size).map { |v| pl_eg(pc, thl[v])}
    flg = false
.
549d
546d
519,522c
#  def send(*op)
##    knid(op[0], :Numeric) ? op.inject(:+) : (rou = ROU).send(*op)
#    case op[0] when Numeric then op.inject else (rou = ROU).send(*op) end
##   op.inject(knid(op[0], :Numeric) ? :+ : '(rou = ROU).send')
  def send(*a)
    case a[0] when Numeric then a.inject else (rou = ROU).send(*a) end
#   a.inject(knid(a[0], :Numeric) ? :+ : '(rou = ROU).send')
.
466,468c
      'ctr' == k && ! knid(v, :Array) ? pl[i]<< v : pl[i] = v     # p 
.
464d
449,450c
  def pl_eg(n = 0, k)
.
438,439c
    pl
#   a.empty? ? pl : a.map { |a| pl.afl(a, self)}
.
426,428c
  def pl_g(n = 0)
.
322,329c
# def s__i_pool_r0( *a) a[@@I_s__i].pool[    a[@@I_s__r0]]      end
# def s__i_syms_r0( *a) a[@@I_s__i].syms[    a[@@I_s__r0]]      end
.
263c
    @@fml.(lb).assoc(sym)               # c 
#   (f = @@fml).(lb).assoc(sym)         # c 
.
260c
  def initialize
    @l__s__send = @@l__s__send
  end

#  def ta(l, cop) [l[0] || :getarg_a, l[1] || cop][0 .. l[2] || 1] end
.
240,243c
#      [:MOVE,    :__sr0],      [:LOADL,   :__send, nil, :pool],
#      [:LOADI,   :__r0 ],      [:LOADSYM, :__send, nil, :syms],
      [:MOVE,     :__sr0],      [:LOADL,   :pool],
      [:LOADI,    :__r0 ],      [:LOADSYM, :syms],
.
237a
  attr_accessor :l__s__send
  @@l__s__send = :s__send

.
220,222c
    GC.disable          # g 
.
198,199c
    GC.disable          # g 
.
178d
171,174d
145,146c
#   t += 1 - (t <=> 0)    # 1 <=> t
.
125,129c
#      c = (n = 0) - 1
#      while i > c += 1      # c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
#       a[n] && yield(a[n], c) && (a.delete_at(n); redo); n += 1
##      (v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
      n = 0
      c = -i - 1
      while 0 > c += 1       # c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
        a[n] && yield(a[n], c + i) && (a.delete_at(n); redo); n += 1
#       (v = a[n]) && yield(v, c + i) && a.delete_at(n) || n += 1
.
25,26c
# NSL_ = 6309   # nanosleep()
NSL_ = 10065    # nanosleep()
.
17a
        :s__send,       :l__s__send,
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/ mailto:seisei@.68..net
heiwa furiisekkusu 1tu