4,576

(24 odpowiedzi, napisanych Software, Gry - 8bit)

No właśnie mi o IRQ idzie: czy jak podamy zgłoszenie SIO na złącze szeregowe komputera, który o transmisji szeregowej wcale nie myśli (czyli nie zajmuje się w danej chwili wykonywaniem procedury SIO), to przerwanie szeregowe wystąpi, czy nie?

Poza tym, nawet jeśli wystąpi, to przewiduję problemy w sytacji, kiedy do komputera oprócz sieci będzie też podpięta lokalna stacja dysków. Mianowicie co będzie, kiedy komputer A będzie się usiłował skontaktować z komputerem B w chwili, kiedy komputer B właśnie jest w trakcie gadania ze stacją?

Trzeba byłoby albo założyć, że wszyscy prowadzą nasłuch wszystkiego, co się w sieci pojawia (tak chyba działa SIO, jak masz trzy stacje, to wszystkie słuchają, co komputer ma do powiedzenia, a tylko jedna odpowiada) - ale to z kolei nie daje wiedzy, który komputer jest w tej chwili zajęty, a który wolny (bo protokół SIO nie przewiduje nadawania numeru komputerowi, tylko stacjom). Albo uzupełnić protokół SIO o wysyłanie do jakiegoś centralnego serwera zawiadomień, że komp numer ten a ten jest zajęty albo wolny.

Moja propozycja byłaby inna: skoro i tak trzeba ingerować w procedury systemowe, i istnieje możliwość konfliktu z innymi urządzeniami SIO, to może lepiej byłoby zrobić to na nowym urządzeniu? Tam też są przerwania, a przynajmniej SIO nie będzie bruździć, no i może dałoby się po prostu podłączyć w ten sposób kartę ethernet :-)

MM: Ostatni raz poprawiam bledne cytowanie, draco, opamietaj sie :)

4,577

(123 odpowiedzi, napisanych Software, Gry - 8bit)

Masz jak zwykle rację, drogi Watsonie. Jednak intencja pytania była inna, bo ja równie dobrze wiem, po co jest tryb NONE. Chciałbym się po prostu przy okazji przekonać, czy Sparta i w tym trybie - kiedy jest RAM pod ROMem - nie wpisuje tych wektorów, na skutek jakiegoś błędu czy zaniedbania (bo niewątpliwie na Atari 800 można sobie ROM odłączać i rzeczy wpisywać podeń, co nie przynosi żadnego efektu).

4,578

(123 odpowiedzi, napisanych Software, Gry - 8bit)

Test jest prosty pod warunkiem, że ci kobieta nie śpi blisko miejsca, gdzie stoi Atari, i pewnie zaczęłaby marudzić, gdybym zaczął w środku nocy to sprawdzać. Powiedzmy, że stanęło na twoim.

Jednak z drugiej strony jest to trochę zależne od trybu pracy, bo w trybie NONE Sparta z pewnością niczego pod ROM-em nie ustawia (jak jesteś przy kompie, to sprawdź).

4,579

(1 odpowiedzi, napisanych Emulacja - 16/32bit)

Ciekawa rzecz. Jak sie zmieni rom na tos'a to nie mozna skorzystac z image'a z afros'em. Wyglada na to , ze trzeb sobie radzic jak z "czystym" falconem.

Tak, bo Afros nie zawiera sterownika do dysku. Sterownik taki - ale kiepski, bo nie mający np. XHDI - zawiera w sobie EmuTOS.

MM: PO CO cytujesz cala wiadomosc, po ktorej piszesz swoja odpowiedz, last warning -> regulamin.

4,580

(123 odpowiedzi, napisanych Software, Gry - 8bit)

Możliwe, że tak jest, aczkolwiek mam wrażenie, że kiedyś próbowałem skorzystac z tych wektorów i odkryłem, że istnieją tylko w trybie za przeproszeniem osram.

Sprawdziłbym teraz, ale nie mam warunków (może jutro).

4,581

(24 odpowiedzi, napisanych Software, Gry - 8bit)

Witam,

A gdyby tak podlaczyc 2 atarki kablem sio (null sio ?) czy jest program na atari emulujacy stacje dyskow? zwykly dos by dzialal...

pierwsze atari mogloby widziec powiedzmy ramdysk drugiego jako swoja stacje. dlaczego ramdysk? bo tak jest w konfigu ;-) konfig urzadzenia O: na lokalu zawiera numer maszyny lokalnej, nazwe oraz numer ewentualnie katalog udostepnianego urzadzenia, moze tez pass ;-)

gdyby taki program obslugi urzadzenia O[n]: dzialal na przerwaniu sio,
to mozna by bylo stworzyc powiedzmy urzadzenie O[n]: na obydwuch atari i wymianiac dane poprzez np. ramdysk.

no dobrze, sio jest podobne do rs232, rs232 do rj45, z czego sio mozna wsadzic w wtyczke rj45, switche maja rj45 jesli nie mieszjaa w protokole transmisji to moze by tak n atari podlaczyc do siebie, co by sie stalo po wywolaniu O7: ?

:-)

prosta siec lokalna? czy raczej za duzo grzybkow?

Obawiam się, że realizacji tego pomysłu trzeba byłoby napisać od nowa pół SIO, albo nawet całe. Kiedy komputer współpracuje ze stacją, to komputer inicjuje transmisję, stacja jest pasywna, po prostu czeka, a potem reaguje na rozkazy z komputera. O ile pamiętam, przebieg komunikacji jest z grubsza taki (załóżmy, że to ma być write sector):

1. komputer programuje pokeya na nadawanie
2. komputer wysyła do stacji komendę (6 bajtów)
3. komputer przeprogramowuje pokeya na odbiór
4. stacja nadsyła wiadomość, że taka komenda jest ogólnie do zrealizowania i prosimy kontynuować (albo, wiadomo, że nie jest i wtedy tu się procedura kończy)
5. komputer przeprogramowuje pokeya na nadawanie
6. komputer wysyła dane
7. komputer przeprogramowuje pokeya na odbiór
8. stacja przysyła wiadomość, że się udało (albo że się nie udało)
9. stacja przechodzi w stan oczekiwania na dalsze rozkazy
10. komputer zamyka interes i spada do domu

To tak działa, bo stacja czeka nieustannie, aż ktoś do niej zagada. Komputer natomiast na to nie czeka. Ergo, jeślibyś połączył przez SIO dwa kompy i jednemu kazał zagadać do drugiej strony przez kabel, to zapewne nie byłoby żadnej odpowiedzi, bo przerwanie SIO to jest ostatnia rzecz, na jaką ten drugi w danej chwili czeka.

Aczkolwiek należałoby spróbować, a nuż ...

4,582

(123 odpowiedzi, napisanych Software, Gry - 8bit)

z jakich obszarow pamieci musi korzystac program aby nie skrzywdzic Sparty i dysku HDD ?

Przy transferach z dysku nie można uzywać rejestrów FP ulokowanych na stronie zerowej, bo korzysta z nich sterownik IDE do obliczeń CHS.

Poza tym nie za dobrym pomysłem jest takie ustawienie DCB, żeby sektory odczytane z dysku lądowały w obszarze $D800-$DFFF, bo albo nic się nie odczyta albo dysk przestanie działać (podczas transmisji tam jest wewnętrzna pamięć sterownika, i to niezależnie od tego, czy ROM systemowy jest włączony, czy nie). Na to ostatnie - "przestanie działać" - pomaga ciepły reset.

4,583

(123 odpowiedzi, napisanych Software, Gry - 8bit)

W trybie banked pod adresami $FFC0-$FFF9 nic nie ma, a w każdym razie nic ważnego. O ile pamiętam, nadpisuje je Turbo BASIC XL, i wszystko dalej działa.

4,584

(75 odpowiedzi, napisanych Software, Gry - 8bit)

Jakie sa ograniczenia kontrolerow HDD stosowanych w Atari ?

Mała ilość ROM-u na program obsługi ;-)

Czy partycja HDD musi miec koniecznie sektory max 256 bajtow ?

Nie.

Czy jest ograniczona liczba sektorow ktore potrafi kontroler zaadresowac ?

Sterownik IDE zaadresuje 16777215 sektorów. Kontroler IDE ma od 24 do 28 bitów na zaadresowanie sektora, LBA2 - drugie tyle o ile mi wiadomo.

W jaki sposob mozna odwolac sie do kontrolera, przez DCB ?

Tak jest, ustawiasz odpowiednie wartości w DCB i lecisz do SIOINT.

Gdzie znajde opis obslugiwanych komend kontrolera ?

Komendy są standardowe, PERCOM tylko odczyt (zapis zwraca błąd), formatowanie zwraca błąd (do formatowania jest FDISK), poza tym masz - o ile pamiętam - $EC odczyt informacji o napędzie (zwraca 512 bajtów tejże informacji), $EE - zaparkowanie dysku (ale tego już nie jestem pewien), no i jest jeszcze reset, ale jaki ma kod to zapomniałem.

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?

Blok PERCOM ma na końcu "IDE", a w bajcie rodzaju napędu jakąś specjalną wartość, której też już w tej chwili nie pamiętam :-)

4,585

(75 odpowiedzi, napisanych Software, Gry - 8bit)

Gucio prawda. System nie stwarza takich ograniczeń. Sterownik KMK IDE stwierdza odwołanie do HDD poprzez sprawdzenie czy w DDEVIC ($0300) siedzi $31, a w DUNIT ($0301) coś z zakresu 1-16. Gdyby wywalić to drugie sprawdzenie i uznać, że jest to numer partycji, to może być ich 256!

Tak jest, ale w tablicy partycji nie mieści się więcej wpisów niż 16. Oczywiście tablicę można zorganizować inaczej, można też zająć więcej miejsca na master bootblock (gdzie siedzi rzeczona tablica), ale to teoria, bo FDISK tego nie zrobi. Trzeba byłoby go napisać od nowa.

I znów pudło! Od czego jest w DCB DBYT1 ($0308) i DBYT2 ($0309)? W nich ustawia się ilość danych przesyłanych przy jednym wywołaniu SIO. Jeśli masz sektory 512B i przestawisz partycję w takie sektory i zabiszesz w DBYTn 512, to masz operacje na 512B.

O ile mnie pamięć nie myli, sterownik IDE w ogóle wartości DBYT nie bierze pod uwagę. Wielkość sektora logicznego jest zapisana w tablicy partycji, i może to być 256 albo 512 bajtów. Transfery sektorów mają zawsze jeden albo drugi rozmiar, ale jak się czyta sektory 128-bajtowe (DBYT = 128, a po każdym transferze DBUFA = DBUFA + DBYT), to oczywiście przeważnie nic nie szkodzi.

Nie do końca. Owszem numer sektora zwykle zapisuje sie w dwóch bajtach (DAUX1 - $030A i DAUX2 - $030B). Ale DCB ma jeden bajt nieużywany ($0307), który można wykorzystać np. jako najstarszy bajt numeru sektora (bity 16-23). Wtedy masz 16,77 milionów sektorów. Jesli użyjesz sektorów 512B, to partycja może mieć do 8GB (tyle też maksymalnie obsłuży sterownik KMK IDE).

Tak jest.

Jak rozpoznac obecnosc kontrolera SIO2IDE, KMK ?


W wersji 1.2 pod adresem $DDD9 masz tekst "IDE BIOS v.1.2n(c) 1995-97 by Dracon". Poza tym pod adresami $D800-$D802 są kolejno wartości: $20, $07, $70. Są to tzw. magic numbers, niezmienne i unikatowe dla KMK IDE. :)

Po pierwsze to jest $28, $07, $70. Po drugie tam jest też numer wersji, ale już nie pamiętam gdzie :-) Po trzecie zacytowana zajawka sterownika jest jego wewnętrzną sprawą, czyli w innej wersji może być pod innym adresem no i nie tej treści.

K.