UBFIM interpreter
Jump to navigation
Jump to search
This is an interpreter for Ultimate BF instruction minimalization!, written in Basic by User:Wh1teWolf:
UBFIM.BAS =
DIM tape(1200)
ptr=0
b=0
f=0
lol=0
REPEAT
INPUT "" a$
b=0
ptr=3
REPEAT
b=b+1
IF b>=999 THEN
IF tape(ptr)=1 then b=0
ENDIF
IF MID$(a$,b,1)="<" THEN
IF ptr>0 THEN ptr=ptr-1
ENDIF
IF MID$(a$,b,1)="(" THEN
ptr=ptr+1
IF tape(ptr)=1 THEN tape(ptr)=0 ELSE tape(ptr)=1
IF tape(ptr)=0 THEN
b=b+1
ENDIF
ENDIF
IF tape(2)=1 THEN
tape(2)=0
lol=0
IF tape(4)=1 THEN
lol=1
ENDIF
IF tape(5)=1 THEN
lol=lol+2
ENDIF
IF tape(6)=1 THEN
lol=lol+4
ENDIF
IF tape(7)=1 THEN
lol=lol+8
ENDIF
IF tape(8)=1 THEN
lol=lol+16
ENDIF
IF tape(9)=1 THEN
lol=lol+32
ENDIF
IF tape(10)=1 THEN
lol=lol+64
ENDIF
IF tape(11)=1 THEN
lol=lol+128
ENDIF
IF lol>0 THEN
PRINT CHR$(lol)
ELSE
FOR f=4 TO 11
tape(f)=0
NEXT
f=0
REPEAT
f=INKEY(1)
UNTIL f<>-1
PRINT CHR$(f)
IF f>=128 THEN
tape(11)=1
f=f-128
ENDIF
IF f>=64 THEN
tape(10)=1
f=f-64
ENDIF
IF f>=32 THEN
tape(9)=1
f=f-32
ENDIF
IF f>=16 THEN
tape(8)=1
f=f-16
ENDIF
IF f>=8 THEN
tape(7)=1
f=f-8
ENDIF
IF f>=4 THEN
tape(6)=1
f=f-4
ENDIF
IF f>=2 THEN
tape(5)=1
f=f-2
ENDIF
IF f>=1 THEN
tape(4)=1
f=f-1
ENDIF
ENDIF
ENDIF
IF MID$(a$,b,1)="!" THEN
IF tape(ptr)=1 THEN b=0 ELSE b=1000
ENDIF
UNTIL b>=1000
a$=""
b=0
UNTIL FALSE