To make this maybe a bit more concrete, without decoupling them, your game logic will look basically like this:
Update all the values (e.g. if something has a velocity, then move it forward).
Read the values to render graphics into the framebuffer, from where your screen can grab it.
Repeat from step 1.
For these things to be decoupled, you suddenly need them to run at the same time, which means you suddenly have to deal with multiple threads and inconsistencies in the state and whatnot.
If you’re using a proper game engine, these things are typically largely solved for you, but especially in the 80s, you wouldn’t have game engines that you could just use.