Here's a lisp file that was used in release 12 to 2002.
The text is created in current text style. The text height is 3/32 and the bubble size is 1/4. This text height is based on not having a height assigned to a text style.
(defun C:BUBTAG (/ bs bsr txsz lea txt p tp p1 p2 p3 ang osmod)
(setq bs 0.25) ; Bubble Size
(setq txsz 0.09375) ; Text Size
(setq bs (* (getvar "dimscale"

bs)
txsz (* (getvar "dimscale"

txsz)
bsr (/ (* (getvar "dimscale"

bs) 2)
)
(setvar "cmdecho" 0)
(initget "Y N"

(setq lea (getkword "\nLeader Required? Yes or No: <N> "

)
(if (= lea nil)(setq lea "N"

)
(setq txt ""

(setq txt (getstring "\nItem Number: <-> "

)
(if (= txt ""

(setq txt "-"

)
(if (or (= lea "N"

(= lea "n"

)
(progn
(setq p (getpoint "\Bubble Location (by Bottom Quadrant): "

tp (list (car p) (+ (/ bs 2) (cadr p)))
)
(setq osmod (getvar "OSMODE"

)
(setvar "OSMODE" 0)
(command ".circle" tp "d" bs ".text" "m" tp txsz 0 txt)
(setvar "OSMODE" osmod)
)
)
(if (or (= lea "Y"

(= lea "y"

)
(progn
(setq p1 (getpoint "\nLeader Starting Point: "

)
(setq p2 (getpoint p1 "\nBubble Location: "

)
(setq ang (angle p1 p2))
(setq p3 (polar p2 ang bsr))
(setq osmod (getvar "osmode"

)
(setvar "osmode" 0)
(command ".line" p1 p2 "" ".circle" p3 "d" bs ".text" "m" p3 txsz 0 txt)
(setvar "OSMODE" osmod)
)
)
(princ)
)
SEMott