Earlier quoted context omitted.
Again, even the crappy ROM versions on 8bit micros supported structured execution flow and functions. Just because it wasn’t a commonly known feature doesn’t mean it wasn’t supported.
Which one? C64 and Speccy not really, they were unstructured, and functions were one liners.
GOSUB was used for subroutines
DEF could create a function (limited to one line but they could be nested to allow more complex functions spanning multiple lines)
Then you had the obvious instructions for iteration, such as FOR
Apple BASIC, BBC Basic (BBC Micro) and Locomotive BASIC (Amstrad CPC) all supported enhancements for composing functions and subroutines. But the latter two are European systems to Americans missed out there.
The ZX Spectrum had been only the quarter of the memory of the C64 and was an intentionally budget device. So don’t expect any thrills there. But even that would have supported at least GOSUB.
I’m not going to argue that structured programming in BASIC was pretty. Because it wasn’t. But that doesn’t mean it wasn’t possible.