Odp: Rozpoznanie zrodla przerwania
Jasne, tylko daj znać jak nauczysz swój "emulator stacji" odbierać dane po DATA OUT i wysyłać po DATA IN.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Silly Venture 2024 SE - stuff Dostępny jest już stuff z zeszłomiesięcznego party Silly Venture 2024
FujiCup FujiCup ma na celu wspieranie sceny gier retro, dając uczestnikom szansę na pokazanie swojego talentu
Echa Silly Venture 2024 SE Są już dostępne wyniki Silly Venture 2024 SE
Uaktualnienie firmware do The400 Poprawki do "fizycznego" emulatora ośmiobitowych komputerów i konsol Atari.
Akcja - Wsparcie w reverse-engineering Wspierajmy tych, którzy do tej pory zrobili wiele!
Strony Poprzednia 1 2 3 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
Jasne, tylko daj znać jak nauczysz swój "emulator stacji" odbierać dane po DATA OUT i wysyłać po DATA IN.
SIO2Atari ? ;)
Fox: takie coś już istnieje i to od 11 lat chyba, nazywa się SimDrive, skonstruował to Simius, a ma to pinokio.
xxl: skoro i tak trzeba mieć specjalny kabel, żeby skrosować linię IN z OUT, to można też przy okazji skrosować COMMAND z INTERRUPT, nie?
@Fox: bardziej Atari2Atari :)
@drac030: nie, poniewaz korzystajac z jednej konfigurowanej linii COMMAND obydwa komputery moga dla siebie byc widziane jako stacji dyskow czyli komputer A jest stacja dla komputera B a komputer B stacja dla komputera A, w przypadku SimDrive raczej tak nie jest. ciekawe tez o ile SimDrive bylby mniej skomplikowany gdyby autor wiedzial ze linia COMMAND jest konfigurowana i moze sluzyc za wejscie przerwan.
ps. simdrive http://www.ftp.pigwa.net/stuff/collecti … simdrv.gif zeby czytelnik wiedzial o czym mowa.
@Krótki: oczywiscie, ze autorzy OS nie musza wykorzystywa zasoby komputera. dopoki jest mozliwosc odlaczenia os jest ok.
e, tam. na uparciocha COMMAND i INTERRUPT tez by sie dalo.
nie wiem czy pisalem ale INTERRUPT i PROCEED opisane w atariki jako wejscie przerwan moze byc rownie dobrze skonfigurowane na WEYJSCIE :-) linie COMMAND,INTERRUPT i PROCEED programuje sie dokladnie tak samo :-)
przydaloby sie zeby ktos obeznany sprzetowo dal kilka wskazowek.
---
dwa komputery, jedna stacja, wszystko podlaczone STANDARDOWYM kablem SIO, atarki nie moga wymieniac sie danymi (tylko pozostalymi dwoma liniami PIA, ktore oznaczaja zajecie sieci) ale moga korzystac ze wspolnej stacji dyskow. jedna zmiana - obydwie atarki maja ustawione COMMAND na wejscie, przelaczenie ktorejkolwiek na wyjscie a co za tym idzie zajecie sieci i uzycie stacji zglasza liniami PIA, zeby druga atarka nie mogla przelaczyc command na wyjscie.
ogolnie to ciekawi mnie dlaczego atari8bitowe nie mialo zadnej namiastki sieci - a moze mialo?
Ostatnio edytowany przez xxl (2011-06-11 14:50:14)
dwa komputery, jedna stacja, wszystko podlaczone STANDARDOWYM kablem SIO, atarki nie moga wymieniac sie danymi (tylko pozostalymi dwoma liniami PIA, ktore oznaczaja zajecie sieci) ale moga korzystac ze wspolnej stacji dyskow. jedna zmiana - obydwie atarki maja ustawione COMMAND na wejscie, przelaczenie ktorejkolwiek na wyjscie a co za tym idzie zajecie sieci i uzycie stacji zglasza liniami PIA, zeby druga atarka nie mogla przelaczyc command na wyjscie.
ogolnie to ciekawi mnie dlaczego atari8bitowe nie mialo zadnej namiastki sieci - a moze mialo?
Toż Ci tłumaczyłem, że nie zadziała, bo jest race condition.
No a wyobraź sobie, że w tym samym momencie oba komputery przełączają COMMAND na wyjście. W tym momencie żaden z nich nie może już odebrać przerwania po COMMAND, i oba zaczynają transmisję.
Race condition jest wtedy, kiedy dwa (albo więcej) niezależne procesy (w systemie wieloprocesowym) albo dwa (lub więcej) niezależne maszyny (w systemie wieloprocesorowym) jednocześnie zajmują ten sam zasób.
Nie jesteś w stanie testować stanu linii zajętości swojej sieci jednocześnie z ustawieniem jej stanu na "zajęta", więc masz race condition.
EDIT: Krótki był szybszy.
Ostatnio edytowany przez drac030 (2011-06-11 15:24:16)
:-) nie chodzi o znaczenie pojecia bo sprowadzimy rozmowe do poziomu 'czytania instrukcji obslugi' ;-) tylko gdzie problem KONKRETNIE wystepuje w tym przypadku :-)
@Krótki: komputer nie przelacza linii COMMAND kiedy chce.
mamy 3 linie wejscia/wyjscie PIA jedna z nich to COMMAND znaczenie znane, obydwa komputery maja ta linie ustawiona na WEJSCIE (czyli odwrotnie jak standardowo) lub standardowo na WYJSCIE a mozliwosc komunikacji rozstrzygana 'nizej'.
mamy komputer 1 i 2, komputer 1 zglasza status linia 1 PIA, komputer 2 linia 2 PIA czyli:
komputer 1 linia A(in) linia B(out)
komputer 2 linia A(out) linia B(in)
obydwa obsluguja przerania generowane przez PIA (ale tez niekoniecznie - moga ustawiac bity przeciwnego kompuera nie wywolujac przerwan - cpu moze miec prerwania zablokowane ale odpowiednie bity w PIA beda sie zachowywaly jak trzeba nadal).
czyli mamy taka sytuacje:
1|2 - komputery
1) 0|0 - konfigurowane linie PIA
2) 0|1
3) 1|0
4) 1|1
sytuacja 2 i 3 jest jasna - jeden z nich zajmuje siec. rozumiem Krótki, ze chodzi o sytuacje 4.
no wiec tak:
komputery chca zglosic chec przejecia sieci, sprawdzaja 2 linie PIA i napotykaja sytuacje 1) 0|0 czyli moga zglaszac chec. ustawiaja swoje linie satusu co sprzetowo ustawia odpowiedni bit w PIA drugiego komputera.
i teraz mamy sytuacje 4) 1|1 czyli obydwa komputery chca przejac siec. obydwa komputery sprawdzaja bity statusu ORAZ bity konfiguracji swojej linii statusu.
komputer A napotyka 1|1 (mam priorytet, zajmuje siec - konfiguruje COMMAND lub nie zaleznie od tego co na poczatku napisalem ale komunikacja jest mozliwa, siec nalezy do mnie)
KOMPUTER B napotykam 1|1 (nie mam priorytetu, kasuje swoja linie, sytuacja 3) 1|0 - ktos inny ma siec, wyjdz.
o to chodzilo?
mamy 3 linie wejscia/wyjscie PIA jedna z nich to COMMAND
A te dwie pozostałe to które są?
Z komentowaniem reszty się na razie wstrzymam, bo może się okaże że nie warto.
kilka razy wczesniej pisalem, ze PIA ma 4 linie w gniezdzie SIO: COMMAND,MOTOR CTL,PROCEED,INTERRUPT. wiadomo jak programuje je OS ale okazalo sie ze mozna je dowolnie zaprogramowac jako wejscie lub wyjscie, wszystkie maja bity statusu w PIA itd. linia MOTOR CTL jest nie do uzytku bo jest sprzetowo zablokowana przez tranzystor na plycie atari, pozostale linie sa do wykorzystania
A PROCEED i INTERRUPT zamierzasz zaprogramować na wyjście jak konkretnie?
Nie zrozumiałeś. Pokaż mi jak zmienić kierunek tych dwóch linii.
A zajrzyj jeszcze raz do datasheetu.
Konkretnie to już pisałem, pokaż mi jak przestawić PROCEED albo INTERRUPT na wyjście.
ok. najnowsza altirra obsluguje linie COMMAND, MOTOR CTL i przerwania PIA jak w rzeczywistosci a nie jak w instrukcjach obslugi atari :)
To w takim razie konfigurując MOTORCTL jako wyjście i odblokowując IRQ możemy sobie sami programowo generować sprzętowe przerwanie? Czy odblokowując przerwanie od PORTA i włączając silnik magnetofonu możemy zawiesić kompa (IRQ nie obsłużone włazi ciągle w procedurę obsługi).
w skrocie tak... atari jest tak czadowe ze mozesz sobie programowo generowac przerwania sprzetowe :)
z testow jakie przeprowadzalem gdy sie tym bawilem pamietam:
1. mozna samemu generowac sprzetowe przerwania PIA IRQ (z i bez podlaczania urzadzenia zewnetrznego) mozliwe do identyfikacji - zglaszanie bitem 6
2. mozna ustawic linie COMMAND jako wejscie przerwania - przerwanie zgloszone ta droga jest nierozpoznane i nie jest kasowane
3. przerwanie zgloszone przez miachaniem MOTORCTRL tez jest nierozpoznane ale jest kasowane przez OS po odczycie stanu joystickow.
zglosilem to gosciowi od Altirry i emulator chyba juz to obsluguje od jakiegos czasu.
---
heheh dwa posty wyzej przeciez o tym pisalem :-)
Ostatnio edytowany przez xxl (2013-12-04 15:27:54)
Strony Poprzednia 1 2 3 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
[ Wygenerowano w 0.448 sekund, wykonano 18 zapytań ]