We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
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