> A lot of this software was all developed on a timeshare and cross compiled to a target machine.
True. And sort of by definition, the 1.0 version of most new computer platform's operating system had to be initially brought up on earlier computer systems. For example, the earliest versions of Amiga system code, including the famous Boing ball demo, were created on text terminal-based computers from the little known, short-lived Sage Computer Corp, due to the Sage being 68000-based and already having a C compiler and 68K assembler ported over to it. So, it wasn't for cross-compiling, it was simply because it was already working. When you're writing the low-level code to read the keyboard and write to the display and disk, it's much easier to do with a working keyboard, display and disk drive. As for how the ENIAC, UNIVAC and other OG computers of the late 40s and early 50s were brought up without any predecessors to lean on, I think those devs were simply made of sterner stuff and bootstrapped their code into the first hardware by plugging tubes, swapping wires and flipping switches. :-)
While cross-compiling from existing, big iron systems was a common pattern in the earliest days of new platforms, after a computer was available a lesser-known pattern occurred around third-party and hobbyist software development before reasonably priced native development tools became available to end consumers (which could take 12 or 18 months). For example, my first assembly language code was written using a tiny monitor/debugger tool I ordered from a classified listing in small magazine for $10 and received on audio cassette tape. It wasn't an assembler because it didn't read or write files and couldn't handle labels or macros but it could turn bytes in memory into assembler mnemonics and vice versa - and for a poor teenager, that was enough to get started.
Fortunately, most 8-bit home computers were quite capable of running a simple assembler from ROM or floppy. My first native assembler was written in the computer's ROM BASIC and it was every bit as primitive as it sounds. As bad as it was, it could still be a tempting option for cash-strapped hobbyists and students because mini-computers and cross-compilers were very expensive and the early "professional grade" native assemblers could cost more than the whole computer. So, us poor 'platform-native' hobby devs worked with cheap, minimalist tools cobbled together by other platform-native devs. It was slow and painful but it (mostly) worked. On low-res 80s home computers like the Atari 800, C-64 and Radio Shack Color Computer, some developers added an external serial terminal via serial cable just to get 80 x 24 text and a better keyboard since that made code editing less painful than using the 32 or 40 column native text display on a television.
True. And sort of by definition, the 1.0 version of most new computer platform's operating system had to be initially brought up on earlier computer systems. For example, the earliest versions of Amiga system code, including the famous Boing ball demo, were created on text terminal-based computers from the little known, short-lived Sage Computer Corp, due to the Sage being 68000-based and already having a C compiler and 68K assembler ported over to it. So, it wasn't for cross-compiling, it was simply because it was already working. When you're writing the low-level code to read the keyboard and write to the display and disk, it's much easier to do with a working keyboard, display and disk drive. As for how the ENIAC, UNIVAC and other OG computers of the late 40s and early 50s were brought up without any predecessors to lean on, I think those devs were simply made of sterner stuff and bootstrapped their code into the first hardware by plugging tubes, swapping wires and flipping switches. :-)
While cross-compiling from existing, big iron systems was a common pattern in the earliest days of new platforms, after a computer was available a lesser-known pattern occurred around third-party and hobbyist software development before reasonably priced native development tools became available to end consumers (which could take 12 or 18 months). For example, my first assembly language code was written using a tiny monitor/debugger tool I ordered from a classified listing in small magazine for $10 and received on audio cassette tape. It wasn't an assembler because it didn't read or write files and couldn't handle labels or macros but it could turn bytes in memory into assembler mnemonics and vice versa - and for a poor teenager, that was enough to get started.
Fortunately, most 8-bit home computers were quite capable of running a simple assembler from ROM or floppy. My first native assembler was written in the computer's ROM BASIC and it was every bit as primitive as it sounds. As bad as it was, it could still be a tempting option for cash-strapped hobbyists and students because mini-computers and cross-compilers were very expensive and the early "professional grade" native assemblers could cost more than the whole computer. So, us poor 'platform-native' hobby devs worked with cheap, minimalist tools cobbled together by other platform-native devs. It was slow and painful but it (mostly) worked. On low-res 80s home computers like the Atari 800, C-64 and Radio Shack Color Computer, some developers added an external serial terminal via serial cable just to get 80 x 24 text and a better keyboard since that made code editing less painful than using the 32 or 40 column native text display on a television.