The KERNAL already supplied with the Commodore 64 had enough basic functionality to be considered an operating system and not just a "monitor":
- Devices were addressed by a primary address (0-31) and secondary address (meaning=device specific)
- You had basic I/O calls: OPEN, LOAD/SAVE (read/write a block of memory), CHRIN/CHROUT (read/write a character), READST (get I/O status), and CLOSE.
- You had the default input and output device and those could be redirected to a file (CHKIN/CHKOUT)
- It was totally possible to open the keyboard for input (device 0) and screen for output (device 3) and get basic buffered terminal-like I/O.
Now if you want to talk about windowed event-driven GUI, now that was crazy for 1982. But Commodore 64 users were lucky to get the above, as Commodore was all about cost cutting, time to market, and underpricing the competition with the 64. Developing a GUI-like environment would have been seen as an unnecessary cost - after all Commodore 64 was stuck with BASIC 2.0 which was primitive even for the time (other Commodores had higher BASICs). That's why an external entity like GEOS really had to come along and do it, because Commodore just wanted to sell as many as possible, and they did that spectacularly well.
Genuine question… Could Commodore have made an OS like this in 1982, if they had today’s perspective?