text_top_line and text_bottom_line (19/20) merely set the top/bottom lines of text and don't have any selection box specific code. They could totally be used for dialogue.
selection_box (21) triggers the selection box menu and writes your choice to a field in the MsgVM
msg_read_selected (22) copies the choice field from the MsgVM to a bitfield in the game manager and then uses it as an index to start a different msg script.
Since that game manager bitfield isn't read anywhere else unless you're ending stage 5, the selection box could totally be used elsewhere to have arbitrary interactive dialogue.
Also, that bitfield is actually two bits for some reason. It only writes a 0 or 1 to it though, since there're two choices.