xxl napisał/a:podoba mi sie pomysl ze standardowym protokolem SIO ale jak ustalic kto jest w danym momencie nadawca a kto odbiorca?
Nadawca wie, że jest nadawcą, bo to nadawca (komendy) inicjuje działanie, nawet jeśli jest to komenda odbierająca dane, tak więc to rozkaz wysłany przez inicjatora połączenia decyduje o kierunku transmisji.
Wszystkie pozostałe maszyny/urządzenia cały czas nasłuchują linię Command.
Każda może być inicjatorem, przerywa nasłuch i już.
Przeanalizuj sobie komunikację ze stacją dysków. Z resztą tak działa całe SIO, wszystkie urządzenia nasłuchują ciągle Command i wszystkie przyjmują rozkazy, dopiero po zdekodowaniu rozkazu, urządzenie przez ten rozkaz wskazane odpowiada. Jeśli tak samo oprogramujesz SIO w komputerze (to znaczy tak jak w dowolnym urządzeniu (poza magnetofonem oczywiście ;) podłączanym do portu szeregowego), to masz gotowe rozwiązanie.
I nie wymaga to wiele pracy, jest standardowe, nie zaburza możliwości równoległego podpięcia stacji dysków itp.
Tak myślę.
Najważniejsze (co wynika z linku do dyskusji, który podałeś), że linia Command może być źródłem przerwań, bo oczekiwanie na zmianę stanu tej linii jest dość krytyczne czasowo i sens ma w zasadzie tylko posiłkowanie się przerwaniami. Jakoś nie wyobrażam sobie by maszyna nie zajmowała się niczym innym, tylko w pętli czekała na zmianę stanu Command ;) przynajmniej nie komputer, bo taka stacja dysków może sobie czekać nawet w taki sposób- nie ma nic innego do roboty w tym czasie ;)
...
A tak w ogóle to pamiętam na którymś z forów dyskusję o emulatorze stacji dysków na malucha - to jest właśnie gotowa realizacja tego pomysłu..... tyle że nie musiała być na przerwaniu Command - emulator stacji też nic nie musi robić jeśli nie realizuje poleceń :) może sobie w nieskończonej pętli czekać.
Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.