The timing constraints are well inside that of a 6502 - the shortest time you need to pulse the line low for is in the order of 6µS.
[...] also are the I/O ports protected or can they handle a bit bang ? (output a bit/pulse, while a bit/pulse is coming in)
if i shorten them because the timing is off, do i wreck my SXB board ?
The amount of time Gordon was saying there is for the 1-Wire interface if understood him right. 1-Wire and I²C use and open-drain (or open-collector) pull-down and passive resistor pull-up. The way to do that with the 65c22 is to leave a 0 in the applicable output register bit, and then change the data-direction register bit in DDRA or DDRA to 1 for output when you want to pull the line down, or 0 for input when you want to let it float up, or to read the line to see if another device is pulling it down. That way there's never any bus contention. If you do make a mistake and have contention (like make it try to actively pull up when something else is pulling down), there's a small possibility of damage if it's left that way for long enough, but definitely not if it's on the order of microseconds. It will be the same kind of thing with many other ICs as well, not just the 65c22.
One wire, as it's name suggests is a two wire bus (ho ho - signal and ground), however it works better with 3 wires - power - otherwise the remote device have to work in what's known as parasite power mode - they can work fine, but work better with active power. (And to supply power - use a spare GPIO pin - they only need a few mA, but then you can effectively power cycle the bus).
You need to be able to change the direction of the pin you use to communicate with the devices.
Each device has a unique 64 bit address, so the first thing you do is send the address - so wire in output mode, hold low for 500µS which is a bus reset (also powers down all devices in parasite power mode), then pull the bus high again...
To send a 1, you pull the bus low for anywhere between 1 and 15µS, then pull the bus high for the remainder of the time-slot which is in the order of 64µS. To send a 0, you pull it low for 60µS, then let it go high for a few more µS, and so on, until you send the device address, then you send the command-code to the device, then you can read data back - to read data back, you send a short pulse low (15µS max) then turn the bus into read mode and see what you get inside the next 60µs. You need to keep sending a high pulse to keep parasite powered devices powered-up - another reason to use 3 wires and provide active power. Devices typically implement CRCs so you can check that to make sure you get the right thing back.
Just looked up the SXB - it's 8Mhz and has VIA/PIAs on-board, so with that in-mind, then the 1-wire protocol ought to be very achievable. I do it in C on an ATmega running at 8Mhz so I'd hope there is plenty of scope for 65c02 ASM at the same speed.
The down-side of 1-wire is that you need to know the devices address - and each device is unique - by design. There is a mechanism to discover a devices address (and a network of devices on one bus master), but it's complex and ugly. Some devices have the address stamped onto them, but reading it off a TO92 size package can be challenging... (so cheat and plug it into a Raspberry Pi as that has 1-wire built into the kernel and just look at the 1-wire virtual filesystem)
Anyway, that's 1-wire. I've just ordered up some PCBs for my SBC project and stuck a 6522 on it, so I might have a go at it myself over the xmas period as I quite like 1-wire sensors and I don't think it would be that challenging to re-write my ATmega C code into 6502...
-Gordon