Windows is a Computer Operating System (OS) and it resides in the Hard Disk. Why do we need an OS in the Computer?
Arduino UNO is a Computer without a keyboard but with a simulated Serial Monitor. So, Arduino UNO has an Operating System. What is the name of this OS and where does it reside?
That is my logical reasoing and I have argument in saying so.
If DOS was to help a user to execute his application program, then Windows has the same role. Likewise, Bootloader of Arduino UNO is doing the same job of uploading/executing users' sketch/program. Therefore, Bootloader is an OS. Of course, Modern OS has much more wider definition and scope.
This inequality is not enough for me. You have to nullify my argument of Post-23 with convincing statements.
Without Bootloader, we can't upload the sketch and also we can't jump to the execution point of the sketch in the application flash. So, it is working like a ROM-resident Monitor Program (one kind of OS) of a Microprocessor Trainer like ETW-6802/SDK-85 which has both Keyboard and Monitor.
That's easy. It prints to the Serial monitor which is part of the Arduino IDE or to a terminal emulator running on the PC. The Arduino hardware (on most boards) creates a virtual serial port on the PC which is used by the Serial monitor or the emulator
I haven't used a trainer in over forty years (a MEK 6800D2), and it had a ROM monitor which included a TTY uploader for Motorola format paper tapes, but it was in no sense a bootloader because the start address of the uploaded code still had to be manually entered on the keypad, and the "go" key hit.
As a student, I even wrote monitor extensions to interface to an optical tape reader to allow faster uploads.
I think my supervisor would have failed me if I'd referred to it as "an OS"
Yes! The 6800 Trainer was only MPU Learning System in the academic institutions and the universities. I started with ETW-6802 (Fig-1) which had no Serial Communication Link and even no Assembler. We did manual coding and entered the program codes using Hex Keypad. After entry, we enetered the beginning address of the program and then hit the GO key and the program got executed. Result appeared on 6-digit display unit.
Figure-2: HeatKit 6802 MPU Trainer
What was happening there when the GO key was hit - there was no answer in the User/Technical Manual. Then I started studying the 6802 data sheets to design/build my own 6802 based Trainer (Fig-2). And the rest was the history of designing /building/selling 8085/8086/80286/89S52 Trainers with Full Serial Link and Text/GUI Interface.
The D2 trainer had a complete assembler listing of the monitor in the documentation pack.
I learned an awful lot from reading through it, from seven segment multiplexing, to keypad reading and serial handling, via breakpointing and memory modification.
Certainly, you were a lucky man who got that opportunity of learning the MPU hardware and then did your higher studies perhaps in Mathematics and Computer Scinece. I was a poor fellow who studied Electrical and Electronic Engineering and later on leant (a little bit) of your programming stuff adopting "Teach Yourself" strategy.
The booting mechanism of 6800/6802 was very cryptic; even, today I think why did Motorola do like that way. In 8085, the processor straight hits at location 0000H to fetch the opcode of the first valid instruction.
In 6800/6802, the processor hits at location FFFE to get an 8-bit data (user-defined) and then it hits at location FFFF to get another 8-bit data (user-defined). The resultant 16-bit (I forgot which one is the upper byte) was loaded into PC and the execution began from the location pointed by PC.
I once wrote a really minimal monitor for a 6802 in less than 256 bytes - it didn't even have a "go" command.
Instead the main monitor loop used an indirect jump via a fixed RAM location, so the start address of the user program was written there using the "modify word" command.
This was what I was trying to tell that the application program could begin from any location of the available RAM space, which was only known to the programmer/user. Now, there would be a need of an interactive scheme/routine that would allow enetering that location in a vacant RAM location (s) from where the address woild be loaded into PC. You wrote that routine much earlier than I. ( I wrote in 1985/86).
In 1992, for the first time in the post graduate class, the professor was explaining to us what was a DOS (Disk Operating System). He simply said that an operating system was any routine that helped the computer user to execute his application program like running the Word Star text processing software or the Princess Game.
So, the small routine that you wrote for 6802 to jump to the beginning point of your loaded program was certainly an Operating System. Hearing that your Supervisor would auto promote you in the next upper class rather than declaring you failed!
You had a hex keypad, what a luxury. I did build a Cosmicos and only had binary input I never expanded beyond the basic board but my build had more RAM and it was battery backed.