If you think programming now is difficult, VisiCalc was written in assembly language for an Apple II. Here are a few words from this web page that describe this code:
“Each line represents no more than one CPU instruction. The
poll_keyboard subroutine call was important. As Bob Frankston describes it: ‘There were no interrupts nor a clock [on the Apple II]. If the user typed a character before the keyboard input buffer was emptied it would be lost ... To avoid [losing characters when the user typed fast during a CPU-intensive operation] I polled the keyboard in the middle of potentially long loops — keyboard checks were strewn throughout the code.”
The code was written at night while dialed into a time-sharing system with only a keyboard and printer.