johnnystarr wrote:The only alternative I can think of is if the sense-switches are tied to the bidirectional data-bus and these values are read using IN/OUT instructions.
Yes.
The Altair 8800 Theory of Operation manual has the schematic. You'll see that address switches A0 - A7 are tied to the data bus D0 - D7 for deposits but switches A8 - A15 are also tied to the data bus lines D0 - D7. The sense switches also include the same circuit any other IO card would have that checks for an INPUT signal and reads 8 bits of the address bus (that's why there can only be 256 IO devices) for its IO address and puts the switch values onto the data bus.
A few things to note.
IN and OUT commands are special. They override the normal mode of the address bus and the peripherals in the system. An IN or OUT is a read or write just like a normal memory read or write which would use the address bus and data lines. Excepet when it's IN/OUT, memory knows to ignore the address and data lines. IO devices will read the address bus and check if it has their address on it and only read the data bus and act if so. When the IN or OUT instruction completes, the CPU returns the system to normal memory IO.
"Examine" and "deposit" are human actions through the front panel (or a monitor ROM). They use normal CPU memory IO like a program would but "examine" and "deposit" are not program commands. While "examine" moves the program counter to the address a specified on the switches as well as read from that address in memory, a program reading from an address in memory does not have the program counter set to that address. The program counter just increments as instructions are executed. So when a program reads the sense switches, it's executing code and the program counter will increment.