The philosopher's question, does Emacs extended through stock functions still constitute "stock emacs"? Here are a handful of functions for these kinds of tasks which rely only on stock Emacs (no dash, s, or whathaveyou).
The idea works by defining an "on-demand window" and a setter function:
(defvar my-on-demand-window nil
In Shell mode (and many other modes that run an external command interpreter), press C-c C-c (comint-interrupt-subjob). That's the C-c prefix of mode-specific commmands, followed by C-c which is chosen to be like C-c in a plain terminal.