For starters, you correctly used the term "firmware". It's not meant for users to start installing bits and pieces of software, like we did on the 8086 (and then edit the autoexec.bat file and reboot, a dozen times or so, to make everything work), the firmware on those computers is what is commonly called "BIOS", everything else ls loaded from external memory - first floppies (I didn't experience the tape/punchcard era), soon followed by hard disks, which is what we still use for this purpose.
To make your thing work you would have to pre-install ALL drivers of ALL supported peripherals on the device, and when a new one comes out you can't do anything with it before you update the firmware. On top of that you'd have to install ALL software programs for ALL things you want to do with it - be a robot, be a greenhouse assistant, whatever. You'll run out of memory halfway the second or third one. Even a modern PC doesn't come with all you could possibly do with it! A halfway decent Linux distribution comes a long way nowadays; Windows has remained as barren as it has always been, requiring you to hunt down and install just about everything beyond the operating system itself separately
I2C can go a long way in detecting what is connected. You have 127 unique addresses (an updated version of I2C has larger address space). An I2C scanner tells you which address has something listening; as long as that address is uniquely assigned to one device (perfectly feasible with your closed ecosystem) you know what is connected to the bus. That's how an I2C address is similar to a device ID. Hotplugging is in theory possible with I2C; as long as you regularly scan the bus for the presence of new things or the disappearance of others as it won't tell you by itself.
How to deal with multiple of the same devices on the bus... well, that was in the ISA era also a challenge. I very much remember the hell of working with IRQ settings. Getting two modems or ethernet cards working in the same computer was anything but straightforward.
this thread is a whole lot of cart, and not alot of horse. i am very well versed in fimwares and how an 8086 works, and to some extent you can emulate the basic functions of that system on arduino;
program base set of instructions in firmware > put a file to read through on an SD card > execute opcodes from the sd card. not perfect but still funtional.
with that premis yes it is very very possible to put the drivers on the firmware, or the HOW, and then you can put the WHAT, WHERE , and WHEN on some external media which would act as the program. so for that i wouldnt need to program every program ever into the firmware. this by the way is the exact premis of the BASIC Stamp. which btw was pretty cool but slow as cuss.
speaking of Linux ya know it can run a pretty close to full OS from a 128MB jump drive thata full OS, but the arguement of this thread is that i cant auto assign an address to a universal card with 160mhz, and 4MB of flash firmware i cant assign a dang address. weird, a forum full of some of the smartest people on the planet and a solution cant be reached.
I want to hold a competition and have a cash prize see who can skin this cat the best.
yeah I2c and a scanner program will do that, but back to one of my original posts if you have an mcp23017 that is plugged into a level translator that takes line input (120V) while at its hear it is a 16 port i/o module, in this application it is a input only module, then the second mcp23017 is plugged into a triac output module, this is a 120v output only module, with a "what kind of card are you" you would know the difference in the two.
to make matters more complicated there is the matter of an 8 channel I2C bus switch that is built into the main boards to address the address limitations of certain I2C chips. that has to be jumpers, all 8 busses and the original master bus go through the backplane to each slave card.
i have thoughts on this, and the more i look at it it is looking like i will need a sub controller on each slave board. the sub controller will connect to the main processor, tell it what the card is, then get information on what the cards address is, dynamically set the I2C addreses and switch a set of 4067 MUX to move the I2C to the appropriate bus to avoid esoteric device address conflicts, and to over come the address max out of more generic chips.
i remeber IRQ, if you kept a tablet of paper in the bottom of your case and you mapped everything out smartly by hand you could do it without so many power cycles, lmao. Jumpered IRQ, was replaced but the automatic version in the first versions of PCI. so what did pci do lets do that.
Referring to the last part of Reply #6 ...
See how much easier it is for someone to read and assimilate when you use a bit of white space. A good test for readability is to read your text aloud to yourself. While space gives time to draw breath and for the eyes and brain to rest for a moment.
I don't believe something as complicated as that can be developed in a vacuum as a theoretical concept. You need to build a project that will operate a security system and then plan the robot project. Then see where there might be common ground between the components, maybe tweak some parts of the security project to make elements that are more generalized.
PLC systems did not come into existence overnight. They evolved from earlier systems that would have had a lot less common functionality. And their development cost $millions.
vacuums have lead to some of the most innovative research developments on the planet. so i can in my small vacuum make something as i say it is, (again this is VERSION 3) and then turn theory to concept. all im asking is for a hand up. or even better, a group collaboration on how to solve this, if you vaguely google it using what ever terms you many people have asked for similar solutions, people dismiss the concept and the threads die. i tried " auto address arduino" and " auto address module arduino"
ill bet a million i can make this work for under 1000$ becasue im am the master of frugaliity and my real life job only makes 30 an hour. so i dont have a million 
Sorry, but that reminds me of teenagers who say "I want to be famous" when asked what they want to be when they grow up.
pretty easily said from someone who has a legacy. youve kinda turned into a dream and buzz killer over the years, your posts used to be full of practicality and some whitty humor. JS. being famous and having a legacy are two different things. i have no desire to be famous. famous people rarely accomplish much of what they want to do and a whole lot of things that fame dictates they can do.