Is there a good Basic interpreter?

Here is one:
#include <stdio.h>
#define Q r=R[p++-'0'];while(
#define B ;break;case
char
s="Qjou!s\311^-g\311^-n\311^-c\::^-q-ma%mO1JBHm%BQ-aP1J[O1HB%[Q<nbj
o)|gps)<<txjudi)m|aQdbtf!::::;sfuvso<aQefgbvmu;aQ<m,,a%CQ<csfbla%bQ<aN2!Q
\ndbtf!aP2Q;m>aP2Q<a%!D12J!JGJHJOJQJFJSJJJMHS%HD12D12N3!N4\nJUJT%UQm>aP4HC%T
Qs\q,,^>m,2aP4HC%SD12N1\nJNQm>s\..q^aHC%NHb%GN1!D32P3%RN1UP1D12JPQUaP1H
R%PN4\nQ<g\(aP3Q(^>aP2Q,2<n\(aP3Q(^>aP4Hb%OD12D12N2!N3\nJVP3Q,,<jg)aP3Q=>n
\(aP3Q(^m>g\(aP3Q(^<fmtf!m,,aHC%QN1!N1\nJ#Qqsjoug)#&e]o#-aP1QaHb%#Qqvut)
aP1Q
aHb%FN1\nQm>::::aHC%VP3Q>bupj)hfut)caHb%JD12JON1!Qjg)a%LN1UP1D12JIQUa
P1HL%IQ*m>aN2!N2\nP2Q<fmtf!m,,aHC%MN1!N2>P2Q>aN2\nP2Hbdd!b/d";k;char R[4][99]
;main(c,v)char
v;{char*p,*r,*q;for(q=s;*q;q++)*q>' '&&(q)--;{FILEi=fopen(v
[1],"r"),*o=fopen(q-3,"w");for(p=s;;p++)switch(*p++){B'M':Q(k=fgetc(i))!=EOF
&&k!=*p)*r++=k;if(k==EOF){fputs("}}\n",o);fclose(o);return system(q-6);}*r=0
B'P':while(*p!='`')fputc(p++,o)B'O':Qr)fputc(*r++,o);p--B'C':k=0;Q k<*p-'0'
)(*r++=fgetc(i),k++);*r=0 B'I':k= *p;if(**R==k)goto G B'G':k= *p;G:p=s;while(
*p!='$'||p[1]!= k)p++;p++B'N':R[*p-'0'][0]++;}}}

8^)