Re: "looking down scrolls up, if you’re a crazy person", ¿ʎꞁꞁɐɔᴉuopǝɥdoɹʇsnoq
In the Good Old Days, when we had to hand-carve[1] the UI from individual characters, we were redrawing the scroll bars as well as the body content. So every move you knew that one screen area had to move up whilst the other moved down, or one eent left and the other right, and you were in charge of all of it.
So that gave us, um, 15 ways to mess up reacting to cursor key presses for a screen region!
And, of course, you'd get some clever clogs pointing out that "this is still the early days of the IBM PC, we have to squeeze it all into the 256K[3] our users can afford" and directly calling memcpy() themselves, instead of your fancy-schmanzy ScrollRegionAndUpdsteScrollbars()[4] saved the few bytes of function call setup. So some regions behaved ok but another region on the same display swapped L&R but only for the horizontal scrollbar, whilst...
By 1987 someone had clearly had enough of all this and wrote a useful mantra to remind us all (and the managed to turn *that* into two entire novels!):
East takes you Out; Out takes you West: West takes you In; In takes you East; Port and Starboard bring you back.
[1] The curses library[2] wasn't much help, as it omitted the IBM ROM character sets's box-drawing glyphs
[2] OTOH the curses thesaurus was well-thumbed on these occasions
[3] "640K is enough for anyone" - 640? You flash bastard! Bet you've got a CGA card and monitor as well!
[4] So you spent a couple of days recoding ScrollXxx() as #define macros and trying all the combos to see what the final object sizes looked like. Whilst hunting down the - interestingly brained person[5] - who shuffled the order of objects in each overlay, so suddenly it code-swapped as you changed scroll direction. Oh, how we all laughed.
[5] that *might* have been someone familiar with corners...