1387c

#     redo
#     next
    end # while true
.
1357d
1344,1345c
#         (pco = rg['pc']; pctj<< pco + 1) if ?J == rg['sym'].to_s[0]     # q 
          (pctj<< (pco = rg['pc']) + 1) if ?J == rg['sym'].to_s[0]        # p     # q 
.
1335,1336d
1327,1328c
#       c, sym = opf(irep, rg['pc'])
        c, sym = @@opf.(irep, rg['pc'], imem)   # c 
.
1323c
#      fl.reject_c!(1) { |v, n| v.resume(n)}
      fl.delete_if__c(1) { |v, n| v.resume(n)}
.
1321c
#      ise.reject! { |fis| fis.resume}
      ise.delete_if(&:resume)
.
1312a
        sl.slp 0
.
1286c
#             rg['pc', -1] = @callinfo[@cp] + 1
.
1234d
1176c
      when :NOP
        sl.slp 0
.
1116,1117d
1095a
# def rou(*a)
  @@rou = ->(*a) {   # l 
#   (imem = @Imem).send(*a)
    (imem = @@Imem).send(*a)
# end
  }

.
1087,1093c
#    Fiber.new {
#    loop {
##      Fiber.yield(@@iset2.resume(rgd))
#       Fiber.yield(@@iset2.resume(rgd, 0))
#       rgd &&= nil
##      sl.slp 0
#      }
#    }

#    fibi(@@iset2, rgd, 0) {|rgd| rgd &&= nil}
    fibi(@@iset2 ||= iset2, rgd, 0) {|rgd| rgd &&= nil}
.
1085c
#    @@iset2 ||= iset2
.
1083a
#    rgd = rg.to_a('pc', 'sp', 'cop', 'sym').dup
.
1074c
#       Fiber.yield(0 != thi && ht <= thi && thi = -1)       ##
#       rg = Fiber.yield(0 != thi && ht <= thi && thi = -1)  ##
        rg, m = Fiber.yield(0 != thi && ht <= thi && (thi = -1; true))       ##
#       rg, m = Fiber.yield(0 != thi && ht <= thi)   ##
#       rg = Fiber.yield(0 > thi)    ##
#       rg, m = Fiber.yield(0 > thi) ##
.
1072d
1061,1064c
#       0 != thi && ht <= thi && thi = -1
.
1059c
#       pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp], :ctr_s, pc1], []][thi <=> 0])     # c 
        pl.pl_es(pc1, opg.(thi) + [oa, []][thi <=> 0])    # c 
.
1055,1056c
#         th = []       ##
#         oa = [k_sp, [sp], :ctr_s, pc1]
.
1043,1053c
##        pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
#         pc, sp, cop, sym = rg
##        pc1 = pc + 1

#         ini.call
          ini.(rg)      # c
.
1039d
1037c
#   Fiber.new { |rg|
    Fiber.new { |rg, m = 0|
.
1035c
#    k_sp = pla.assoc('sp')[1]
#    oa = []
.
1022,1024d
1014,1015c
#    opg = ->(oi) {  # l 
#      lopa = []
    opg = ->(oi, lopa = []) {        # l 
.
1002,1004d
996c
#    fml = []
    k_sp = pla.assoc('sp')[1]
    pc1, fml, oa, th = nil

#    ini = ->{
    ini = ->(rg) {
#     pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
      pc, sp, cop, sym = rg
#     pc1 = pc + 1
      fml = imem.fml('th', sym) || (
#       printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
#       printf("Unkown code %s \n", OPTABLE_SYM[rou(:get_opcode, cop)])
#       printf("Unkown code %s \n", OPTABLE_SYM[@@rou.(:get_opcode, cop)])    # c 
        pl.verb("Unkown code #{sym} ") # .to_s
        return nil
#       raise
##      rg = Fiber.yield(nil)
      )

      pc1 = pc + 1
      oa = [k_sp, [sp], :ctr_s, pc1]
      th = []   ##
    }

.
989,990c
#    pc = 0
#    pc1 = pc + 1
#    pc1 = 0
.
987a
#    sp, cop, sym = nil
.
969,981c
#    Fiber.new { |m = 1|
#      m = Fiber.yield(false)
#      loop {
#       m = Fiber.yield(@@fls2.resume(pc, m))
##      Fiber.yield(flg.resume(pc))
#       0 > pc && pc = ~ pc
##      sl.slp 0
#      }
#    }

#   fibi(@@fls2, pc, 1) {|pc| 0 > pc ? ~ pc : pc}
    fibi(@@fls2 ||= fls2, pc, 1) {|pc| 0 > pc ? ~ pc : pc}
.
966,967c
##  sl = @@slp
#    @@fls2 ||= fls2
.
957d
955c
#         flg[0] && ca[flg[1] ? 0 : 1].(r)      # c 
          ca[flg[1] ? 0 : 1].(r)        # c 
.
950,951d
947,948c
#       if 0 == m
        if 0 == m && flg[0]
.
944,945c
#         f = ! flg.include?(false)
          f = flg.all?
#         pc, m = fy.(m, false, pc)     # c 
.
935,936c
        0 > pc && pc = ini.(pc)              # c 
.
928,933c
#       if 0 > pc
#         pc = ini.(pc) # c 
#       end
.
925d
919,920c
#    fy = ->(m, f) { sl.slp 0
    fy = ->(m, f, pc) { sl.slp 0
.
915c
#       end
.
907,913c
#       if 0 == s.size
#         sl.slp 0
#       else
        0 == s.size ? sl.slp(0) : plr +=
.
903d
895,900c
#       _ = plr[r[1]] || lm.(isr0, r[1])                # c 
        _ = (_ = plr[r[1]]).nil? ? lm.(isr0, r[1]) : _  # c 
.
893d
889,890c
#   lm = ->(isr0, r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}  # l 
    lm = ->(isr0, r1) {imem.send(pr, *isr0, r1, mt)}                 # l 
.
884,886c
        f = false
#      )][0] + 1) - 1
      )][0] - 1
.
880,881c
#    ini = ->(pc) { (pc1 = [~ pc, (
    ini = ->(pc) { [pc1 = ~ pc + 1, (
.
876,877c
      sz = 4; ap = @@fls_w ||= (1 << sz) # - 1 - 1
#      sz -= 2; ap = @@fls_m ||= ((ap << sz) + ap >> sz - 1) + 1 >> 1
      ap = @@fls_m ||=
        ((ap += (ap <<= 1) + (ap <<= 2) + (ap << 2)) >> sz) + 1 >> 1
.
874c
#      r = nil
.
869,870d
865,866c
#      pl = nil; s = Stack.new; sp = nil; plr = []
#      i = @irep
      i = @irep; s = Stack.new
      sp, pl, r = nil
      plr = []
.
839a
  def fibi(fb, p1, ctr = 0)
    sl = @@slp
    Fiber.new { |m = 1|
      ctr.times {m = Fiber.yield(false)}
      loop {
        sl.slp 0
        m = Fiber.yield(fb.resume(p1, m))
        p1 = yield(p1)
#       sl.slp 0
      }
    }
  end

.
795c
#   @Imem = Imem.new
    @Imem = @@Imem
.
789a
    @@Imem = Imem.new
.
787d
719c
#  def size; @s.size end
  def size; @s.length - @p end
.
714d
710d
702a
#   [@s[a[0] + @p] = a[1], @@m.unlock][0]
.
697,699d
690,691d
684c
#   [s, @@m.unlock][0]
.
670d
655a
  @@f = ''

  def initialize
#   @f = ''             # cannot set instance variable (ArgumentError)
  end

.
613,653d
602,606d
596,598c
#     fpl.reject!(&:resume)
#      fpl = reject_c_th(fpl, 1) { |fb, n| fb.resume}
#      fpl = reject_c!(1, fpl) { |fb, n| fb.resume}
      fpl = delete_if__c(1, fpl) { |fb, n| fb.resume}
#####      fpl.reject!.with_index { |fb, i| break if i > 0; fb.resume}
#####      fpl.reject!.with_index { |fb, i| next if i > 0; fb.resume}
#####      fpl.reject!.with_index { |fb, i| p i; fb.resume}
#####      fpl.empty? || fpl[0].resume && fpl.shift
      sl.slp
.
581c
#      sl.slp
.
578c
#    sl = @@slp
    (sl = @@slp).slp
.
563,569c
#       mx = thn.hgt
##      mx ||= thn.hgt
#       Fiber.yield([(f = #### th[idx].nil?.! && # fuguai taisaku
        Fiber.yield((f = #### th[idx].nil?.! && # fuguai taisaku
#                       ckth(th[mx], 3)) &&
                        ckth(th[mx = thn.hgt], 3)) && (
#                               (pl_es(pc, ['th', th]); true),
#                       sl.slp(0) # (0, 4096)
                                pl_es(pc, ['th', th]); sl.slp(0) # (0, 4096)
#       ][0] && idx >= mx)
                                true) && idx >= mx)

.
555c
    f = nil; mx = nil
.
544,545c
#    (imem = @@Imem).mcall(a, op) || op
#    (imem = @@Imem).send(opc, op) || op
    (imem = @@Imem).send(a, op) || op
.
529,530c
#    (tb == a || knid(a, :Array).! || 0 >= a.hgt) && (return a)
    (tb == a || case a when Array then 0 >= a.hgt end) && (return a)
.
513c
#      print s
      puts s
.
511c
#    s <<= "\n"
.
472,474c
#   ctr = (cta = pl_g(0).afl('ctr', self)).shift
#   pl_es(0, ['ctr', cta])
#   ctr
.
468a
#    [(cta = pl_g(0).afl('ctr', self)).shift, pl_es(0, ['ctr', cta])][0]

.
465a
##  pl_s(n, pl)
##  pl
  end

  def ref_pl0i; @@pl0i = pl_g(-1) end
#  def to_ia(n)
  def to_ia(n, lpl = self)
    if 0 == n
#      self[n]
      lpl[n]
    else
#      @@Plmg.(pl_g(-1), self[n])       # c 
      @@Plmg.(@@pl0i, lpl[n])           # c 
    end
.
464c
    pl_s(n, pl) #   @@m.unlock
.
462a
#     pl[i_k] = 'ctr' == k && ! knid(v, :Array) ? pl[i_k] + [v] : v     # p 
      pl[i_k] = 'ctr' == k && ! knid(v, :Array) ? pl[i_k]<< v : v # p 
##    pl[i_k].send(('ctr' == k && ! knid(v, :Array) ? '<<' : '='), v)             # p 
##    pl[i_k].send(('ctr' == k && ! knid(v, :Array) ? '<<' : 'replace'), v)       # p 
#     pl[i_k = self.afl(k, ?i)] += [v]  # q     # ? 
#     pl[i_k] = (pl[i_k]<< v).send('ctr' == k && knid(v, :Array).! ? 'itself' : 'pop')    # p     # .itself higokan monami-ya.mrb:60510200 mruby:70410200
#     pl[i_k] = (pl[i_k]<< v)['ctr' == k && knid(v, :Array).! ? 0 .. -1 : -1]     # p     # ? 
.
461c
#     'ctr' == k && knid(v, :Array).! ? pl[i_k]<< v : pl[i_k] = v # p 
.
448c
#  def pl_es(n = 0, ary)
  def pl_es(n = 0, ary = nil, pl = nil)
.
440c
#   self[n] = 0 == n ? (@@plmg ||= ->(pi, pv) {pi.map { |v| [v[0], pv.shift]}}
#       ).(pl_g(-1), pl) : pl           # c 
#    self[n] = 0 == n ? @@Plmg.(pl_g(-1), pl) : pl      # c 
    self[n] = 0 == n ? @@Plmg.(@@pl0i, pl) : pl         # c 
#       ).(@@pl0i, pl) : pl             # c 
.
430a
##p      to_ia(n, pl)
##n >= 0 && p( Rg.new(to_ia(n)).to_ra)
##n >= 0 && ( rg = Rg.new(to_ia(n)); p(rg.to_ra('th')))
#n >= 0 && ( rg = Rg.new(to_ia(n)); p(rg['ctr']))
##n >= 0 && p( to_ia(n))
.
412c
#  @@Pldv = ->(pl) {pl.map { |a| a[1]}}      # l 
  @@Pldv = ->(pl, n = 1) {pl.map { |a| a[n]}}        # l 

.
398,407c
##  t > n ? n + 1 : n                        ##  n + (t > n ? 1 : 0)
##  n + [false, true].index(t > n)   ##  n + (((t > n) && 1) || 0)
##  n + (t > n && 1 || 0)            #   n - ((n <=> t) >> 1)
##  n + ((t <=> n) & 1)[0]            ##  n + (((t <=> n) + 1) & 2)[1]      # higokan mruby 70410200
##  n + ((((t <=> n) + 1) & 2) >> 1)    ##  n + ((t <=> n) + 1 >> 1)
.
359d
355,356c
#    [yield(a), f.close][0]
##   [yield(a), @m.unlock][0]
    [yield(a), ## flg &&
        f.close][0]
#       @m.unlock][0]
.
353c
    end ## if flg
.
339a

    ref_pl0i
.
332,336c
#     self.replace(self[0 .. self.size & ((n = @@rmth + 1) << 1) | n])        # ??    # higokan ? mruby:70410200 monami-ya.mrb:60510200
#     self.slice!((self.size & ((n = @@rmth + 1) << 1) | n) + 1 .. -1)        # higokan mruby:70410200 monami-ya.mrb:60510200
.
328c
#    self[0] = [['th', [[thini]]], ['sym', [6309]], ['ctr', []]]
    self[0] = [[pl0i[0], [[thini]]], [pl0i[1], [6309]], [pl0i[2], []]]
.
325c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8    # www.monami-ya.jp
.
321a
    pl0i = ['th', 'sym', 'ctr']
.
315d
307c
#  def initialize
  def initialize(*a)
.
304a
    @@pl0i = nil
.
295a
#   @@fl += '/loc'      # RISC OS ?

.
274a
    case op[0] when Numeric then op.inject(:+) else self.__send__(*op) end
.
271,273c
# def mcall(*op)
#   case op[0] when Numeric then op.inject(:+) else self.send(*op) end
  def send(*op)         # fuantei ? mruby 70410200
.
263d
261d
246c
#  def ta(l, cop) [l.shift || :getarg_a, l.shift || cop][0 .. l[-1] || 1] end
  def ta(l, cop) [l[0] || :getarg_a, l[1] || cop][0 .. l[2] || 1] end
.
189a
#   (f = @@fml).(lb).assoc(sym)         # c 
.
141a
#   t -= t <=> 1
.
138c
  @@slp = (((@@slp = NSLP_ >> 2) + (@@slp >> 5)) >> 7) + 1 >> 1         # conf.gem :github => 'matsumotory/mruby-sleep'      # msleep usleep
#  @@slp = 5    # conf.gem :github => 'matsumotory/mruby-sleep'      # msleep usleep
.
121,130c
#      (i > n = a.size) && i = n
#      n = c = 0
#      while c < i
#       a[n] && yield(a[n], c) && a.delete_at(n) || n += 1
##      (v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
#       c += 1
#      end
##    end
#    a
#  end
.
116,119d
114d
111,112c
## def reject_c_th(a, i = nil)
#  def reject_c_th(a, i)
.
108c
#    self.replace a
    f ? self.replace(a) : a
.
105c
#       c += 1
.
101,102c
#      n = c = 0
      n = 0; c = -1
#      while c < i
      while i > c += 1       # c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
.
90,91c
#  def reject_c!(i)
# def reject_c!(i, a = self)    # higokan ? mruby-thread:410200 monami-ya.mrb:60510200 mruby:70410200
  def delete_if__c(i, a = nil)
#    a = self
#   f = (a == self)             # higokan ? mruby-thread:410200 monami-ya.mrb:60510200 mruby:70410200
    f = ! a
    a ||= self
.
54,56c
#  def sgp; self + self.abs >> 1 end
.
7a
TB = []

.
4a
NSLP_ = 6309    # nanosleep()
.
3c
((((((((([
        :Array, :Numeric,       :Fixnum,        # :Float,       :Bignum,
        :Symbol,        :String,        # :Object,
        :getarg_a,      :getarg_b,      :getarg_sbx,    :getarg_bx,
        :mk_opcode,     :getarg_c,
        :MOVE,  :LOADL, :LOADI, :LOADSYM,       :LOADSELF,      :LOADT,
        :ADD,   :ADDI,  :SUB,   :SUBI,  :MUL,   :DIV,   :EQ,
        :JMP,   :JMPIF, :JMPNOT,        :RETURN,        :SEND,  :ENTER, :NOP,
        :+,     :-,     :*,     :/,
        :__sr0, :__r0,  :__sr01,        :__r1_eq_sr01,  :__i__r0,
        :pool,  :syms,

        :ctr_s, :p
])))))))))

.



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