3xt 7xr 10xb 7xs 3xy 3xx
!pick up chars until ESC return in q0!
[1.u1<↑Tu0(q0-27)"E0; 'q0i>q1,.x0]1

!move up to matching right paren!
[1 !nesting level! 0u1 
 < (.-z)"E!end of file! ;tMissing ) 1; ' 
  (1A-41)"E!right paren! q1"E !exit! 1; ' (q1-1)u1' 
  (1A-40)"E!left paren! (q1+1)u1' 
  !move dot! c>]1

!change to base pointer format!
[2[1 !called with base in q0! q0u2 .u1 
  !construct command! 
    i<r( 
    g2 
    @i/+/ 
    g2 
    @i/[; mr d i] 1u7 v>/
  !execute it! q1,.x0m0 ]1]2

!apply mb twice for each token of q8!
[1<
  !take token from q8 to q0!
  zj .u1 g8 q1j (.-z)"E!no more tokens! 1; '
  :s u0 q0"Ezj' q0"N-d' .,zx8 q1,.x0
 [0 0jmb ]0 0jmb>]1

!convert file for list of bases!
[1 zj .u1 iseb ctxb mdb bb tb ltb extb q1,.x8 ms ]1

!test for single base!
;tBase:  mt jmb