Spis treści 

Dodatkowa stacja dysków do Amigi (1993r.)

Wraz ze wzrostem popularności komputerów, wzrasta zarówno zainteresowanie ich racjonalnym wykorzystaniem, jak i ich rozbudową. Szybki rozwój nowoczesnych i tanich technologii umożliwia stały dopływ coraz nowszych urządzeń, coraz lepiej spełniających powierzone im zadania. Dzisiaj każdy już zdaje sobie sprawę, że komputer to nie tylko elektroniczna rozrywka, zabawka, ale także i profesjonalne narzędzie pracy wielu ludzi.

Celem niniejszej pracy jest zaadaptowanie stacji dysków komputera IBM do współpracy z komputerem Amiga 500.

Pisząc ten tekst wykorzystywałem:


Programy:

Ogólne informacje o komputerze Amiga

Pierwszym modelem Amigi była Amiga 1000. Komputer ten pojawił sią na rynku w 1986 roku. W roku 1987 Commodore wypuszcza kolejne modele: Amigę 500 i Amigę 2000. Obydwa komputery pojawiły się w tym samym momencie i miały sprecyzowane przeznaczenie. Amiga 500, zdaniem firmy Commodore, miała być domowym superkomputerem. Amiga 2000 to znacznie rozszerzony model w porównaniu do "pięćsetki". Jest to komputer o budowie modularnej, zawierający 11 slotów (gniazd) na karty rozszerzające zarówno w standardzie Amigi, jak i IBM'a. Amigi 2000 wyposażono w nowy koprocesor o nazwie BUSTER, który zajmuje się obsługą slotów, także pamięć została rozszerzona do 1MB.

W roku 1988 Commodore wprowadza nowy model - Amigę 2500, która nie jest niczym innym niż Amiga 2000 z zainstalowaną kartą kontrolera twardego dysku (A2090) oraz kartą akceleratora (A2620) z procesorem Motorola MC68020 i koprocesorem 68881. W 1990 roku następuje przełom - Commodore wypuszcza Amigę 3000. Tym razem jest to całkowicie nowy komputer. Zainstalowano nowy Kickstart (system operacyjny) 2.0, 32-bitowy procesor, pozostałe koprocesory zostały przekonstruowane, tak aby były szybsze i wydajniejsze, dodano nowy koprocesor AMBER. W Amidze 3000 na płycie głównej montowany jest kontroler dysków twardych SCSI, zwiększono także ilość gniazd dodając drugi port VIDEO. W maju 1991 roku firma Commodore przedstawia nowy model - Amigę 3000T. Jest to po prostu Amiga 3000 w nowej obudowie, ze zwiększoną ilością pamięci.

Obecnie zaprzestano produkcji Amigi 500 i 2000 wprowadzając na ich miejsce nowe modele A600, A1200 i A4000. Komputery te wykonane są w technologii montażu powierzchniowego.

Rodzina Commodore Amiga jak do tej pory liczy sobie 11 modeli włączając w to Amigą CDTV, jak również A500+ czy A2500.

Możliwości ukryte w układach scalonych

Najprostszy komputer zawiera mikroprocesor, pamięć ROM z systemem operacyjnym, nieco pamięci RAM oraz przynajmniej jeden układ umożliwiający komunikację z układami wejścia/wyjścia. Każdy komputer zawiera także układy sterujące, takie jak na przykład dekoder adresów.

Struktura Amigi jest przedstawiona na rysunku nr 1.

struktura Amigi

Blok M1 to mikroprocesor MC68000, którego szyny adresowe i danych podłączone są bezpośrednio do dwóch portów wejścia/wyjścia 8520 (CIA-A i CIA-B) i pamięci ROM, zawierającej Kickstart. Ta część Amigi jest konwencjonalna - tylko procesor ma dostęp do obydwu układów CIA oraz Kickstart ROM'u. W bloku S1 zawarte są specjalizowane układy (ang. custom chip) Amigi: Denise, Agnus i Paula, operujące na pamięci CHIP-RAM (blok P1). Wszystkie te układy są podłączone do wspólnej szyny danych. Szyna ta jest odseparowana od szyny danych procesora poprzez bufor umożliwiający połączenie lub rozdzielenie obu szyn danych (blok B1). Trzy układy specjalizowane są połączone ze sobą za pomocą szyny adresowej rejestrów. Szyna ta może być podłączona do szyny adresowej procesora.

Grafika wysokiej rozdzielczości w Amidze może potrzebować więcej niż 64 KB pamięci RAM. Wymaga to dostępu do pamięci z częstotliwością blisko 2 milionów razy na sekundę. Gdyby procesor musiał wykonać to zadanie, byłby zapewne przeciążony. Jeśli dodać do tego obsługę dźwięku i stacji dysków to nawet dla Motoroli MC68000 jest to zadanie niewykonalne. Dlatego projektanci Amigi wprowadzili dodatkowy procesor nazywany sterownikiem DMA (ang. Direct Memory Access - bezpośredni dostęp do pamięci). Jest on umieszczony w kości Agnus, co tłumaczy jej podłączenie do szyny danych CHIP-RAM. Dzięki DMA wszystkie wyżej wymienione operacje są wykonywane bez pośrednictwa MC68000.

Pozostałe dwa układy (Paula i Denise) oraz reszta układu Agnus pracują jako standardowe układy peryferyjne. Zawierają one pewną liczbę rejestrów, do których ma dostęp procesor (lub kontoler DMA). Konkretne rejestry są wybierane za pośrednictwem szyny adresowej rejestrów. Składa sią ona z ośmiu linii, co daje łącznie 256 możliwych stanów. Nie istnieje tu specjalny wybór konkretnego układu: jeśli szyna zawiera wartość 255 ($FF), to żaden rejestr nie został wybrany. Jeśli na szynie pojawi sią inna wartość, to układ zawierający rejestr o danym numerze aktywuje go.
Pozostaje jeszcze jeden nierozwiązany problem. Szyna danych i szyna adresowa mogą być kontrolowane tylko przez jeden kontroler (procesor lub DMA) w tym samym czasie. Jeśli oba te układy spróbują wymusić przydzielenie szyny dla siebie, to powstanie zjawisko nazwane "bus contention" (spór, sprzeczka) powodujące zablokowanie systemu. Aby temu zapobiec, dostęp do szyn musi być przełączany pomiądzy DMA i procesorem. Zadanie to rozwiązano następująco:

W Amidze zastosowano po raz pierwszy rozwiązania techniczne wykorzystujące najnowsze koncepcje i technologie. Myślą przewodnią konstruktorów było odciążenie procesora głównego ze wszelkich prac związanych z obsługą ekranu, pamięci i innych urządzeń zewnętrznych. Zastosowano szybki procesor Motorola MC 68000. Przetwarzaniem i sterowaniem przepływem danych zajmują się dodatkowe, specjalizowane procesory (zrealizowane w technologii VLSI) nazwane: Denise, Agnus i Paula. Aby przyspieszyć komunikację między elementami systemu a pamięcią, przesyłanie danych jest realizowane głównie przez 16-bitowe kanały DMA.

Agnus

Agnus jest w Amidze najbardziej złożonym układem specjalizowanym - zawiera całą strukturę układów DMA. Każde z 6 źródeł DMA ma swoją własną logikę sterującą. Wszystkie są podłączone do generatora adresu CHIP-RAM oraz do generatora adresu rejestru. Generatory te wytwarzają adres pożądanej komórki w obszarze CHIP-RAM i adres rejestru docelowego. W ten sposób logika układu DMA zapisuje dane pobrane z pamięci RAM do wybranego rejestru lub wpisuje zawartość rejestru do wybranej komórki pamięci RAM.

Do generatora adresu CHIP-RAM jest także podłączony licznik, generujący sygnały odświeżające pamięć RAM. Jest to niezbędne przy zastosowanych w Amidze dynamicznych pamięciach RAM.

Agnus zawiera również liczniki rastra i kolumn. Liczniki te generują także sygnały synchronizacji poziomej i pionowej obrazu video. Sygnał synchronizacji poziomej sygnalizuje start nowej linii, natomiast synchronizacji pionowej - start nowej "ramki" obrazu. Sygnały synchronizacji mogą być doprowadzone z zewnątrz, co umożliwia zsynchronizowanie obrazu Amigi np. z obrazem z magnetowidu (Genlock).

Kolejnymi ważnymi elementami w Agnus są Blitter i Copper. Blitter jest specjalnym układem mogącym bardzo szybko przesuwać obszary pamięci. Zwalnia to procesor od wykonywania bardzo czasochłonnych operacji, zresztą Blitter wykonuje je znacznie szybciej niż potrafiłby to zrobić procesor. Blitter może także wypełniać obszary pamięci oraz wykonywać na nich określone operacje logiczne.

Copper jest jednym z koprocesorów. Jego program jest nazywany copper-listą i zawiera tylko trzy instrukcje. Może on zmieniać zawartość różnych rejestrów układów specjalizowanych w momencie, gdy wiązka elektronów na ekranie osiągnie z góry określoną pozycję.

Denise

Układ Denise zajmuje się obrazem, steruje jego kolorem, animacją obiektów zdefiniowanych na ekranie, SPRITE'ami (8 sztuk) oraz trybami pracy wewnętrznego układu wyświetlającego. Najważniejszą funkcją tego układu jest generacja obrazu (możemy go nazwać układem wizyjnym). Pierwszą fazę generacji obrazu realizuje Agnus. Pobiera on z pamięci CHIP-RAM dane graficzne i zapisuje w rejestrach Denise. To samo czyni z danymi dla SPRITE'ów (duszków). Rejestry Denise zawsze zawierają dane grafiki i SPRITE'ów dla 15 punktów (pixel; 1 bit odpowiada jednemu punktowi na ekranie, a dane w rejestrze mają długość słowa czyli 16 bitów). Te dane muszą być zmieniane przez Denise na odpowiednią reprezentację sygnałów RGB. Najpierw dane graficzne są tłumaczone z 16-bitowej reprezentacji równoległej na szeregowy łańcuch danych za pomocą sekwencyjnej konwersji bit-poziom. Priorytetowa logika wybiera uporządkowane dane dla bieżącego punktu (pixel) kierując się jego priorytetem (stąd nazwa). Pobierane są zarówno dane graficzne jak i dane dla SPRITE'ów. Stosownie do tych danych dekoder koloru wybiera jeden z 32 rejestrów koloru. Wartość wybranego koloru jest przesyłana jako cyfrowy sygnał RGB na wyjście.

Jeśli wybrano tryb grafiki HAM (Hold-And-Modify) lub EHB (Extra-Half-Bright) to dane z rejestru kolorów są odpowiednio modyfikowane zanim opuszczą układ Denise. Dane z sekwencerów są także przesyłane do logiki zarządzającej kolizjami, gdzie sprawdzane jest występowanie kolizji (np. duszek "zderzył" się z tłem bądź z innym duszkiem). Wynik testu zostaje umieszczony w rejestrze kolizji.

Paula

Kolejnym układem specjalizowanym zamontowanym w Amidze jest Paula. Jej głównym zadaniem jest kontrola operacji wejścia/wyjścia. Paula obsługuje takie urządzenia jak stacja dysków, łącze szeregowe RS-232, ponadto jest wykorzystywana do obsługi generacji dźwięku. Oprócz tego Paula obsługuje system przerwań.

Z czternastu możliwych źródeł Paula generuje sygnały przerwań dla procesora. Przerwania na poziomach 1-6 są wytwarzane na linii IPL procesora. Paula daje programiście możliwość zezwolenia lub zabronienia przerwań ze wszystkich źródeł.

Transmisja danych do i ze stacji dysków jak również generacja dźwięku przebiega z udziałem DMA. W czasie odczytu z dyskietki nie zawsze jest możliwe sprawdzanie czy następne dane są gotowe do transmisji DMA za pośrednictwem układu Agnus. Powodem tego jest zmiana prędkości odczytu. Również przy tworzeniu dźwięku Agnus nie może przewidzieć odpowiedniego momentu dla transmisji kolejnych danych. Aby uzyskać płynną transmisję DMA wyposażono Paulę w linię DMAL informującą Agnus o konieczności DMA.

Układy do transmisji szeregowej są zawarte wewnątrz bloku o nazwie UART (ang. Universal Asynchronous Receive Transmit, co można przetłumaczyć jako: uniwersalny, asynchroniczny nadajnik/odbiornik).

Dyskowy System Operacyjny Amigi (Amiga DOS)

Konstruktorzy komputera Amiga, aby maksymalnie uprościć dialog między komputerem a użytkownikiem (ze szczególnym uwzględnieniem dyskowych operacji wejścia/wyjścia) umieścili w pamięci ROM komputera system operacyjny zwany KICKSTART'em. Można w nim znaleźć gotowe procedury do obróbki dźwięku, grafiki, operacji zapisu i odczytu danych z urządzeń zewnętrznych oraz tzw. kernel odpowiadający za wielozadaniowość (ang. multitasking) komputera.

Wszystkie procedury zostały przez konstruktorów jasno i przejrzyście posortowane oraz umieszczone w tzw. bibliotekach i urządzeniach (ang. library, device). Warto zastanowić się nad konstrukcją bibliotek. Każda z nich składa się z tzw. bazy biblioteki (adresu względem którego odwołujemy się do procedur w niej zawartych), zestawu danych o wersji, autorze, dacie utworzenia oraz ze zbioru właściwych procedur napisanych w języku maszynowym. Właściwie nie byłoby w tym nic szczególnego gdyby nie fakt, że bez względu na wersję i objętość samej procedury ma ona zawsze taki sam adres liczony względem bazy biblioteki. Dla przykładu weźmy bibliotekę dos.library, w której znajdują się procedury obsługi stacji dysków. Można w niej znaleźć między innymi funkcję Read (odczyt danych z dysku), której adres wyznaczamy odejmując 42 bajty (ang. offset) od bazy biblioteki.

Inne funkcje to:


Warto też wspomnieć o sposobie uzyskiwania bazy (adresu) biblioteki. Odwoływanie się do konkretnego miejsca w pamięci komputera nie miałoby sensu ponieważ w Amidze pamięć na poszczególne programy przydzielana jest dynamicznie i nie zawsze biblioteka znajduje się pod tym samym adresem. Praktycznie jedynymi stałymi adresami w pamięci komputera są tzw. Custom CHIP (rejestry koprocesorów) oraz EXEC będący w istocie bazą najważniejszej z bibliotek - exec.library. To w niej zawarte są procedury otwierania (otrzymywania baz) innych bibliotek i urządzeń oraz ich zamykania. Przykładowe programy do otwierania i zamykania bibliotek znajdują się poniżej.

Asembler

          Start   lea DosName(pc),a1 ; weź adres napisu
                  move.l #0,d0       ; wersja biblioteki
                  move.l $4.w,a6     ; weź bazę "exec.library"
                  jsr    -552(a6)    ; otwórz bibliotekę
                  tst.l  d0          ; otrzymano bazę biblioteki ?
                  beq    Error       ; nie - przejdź do etykiety Error
                  move.l d0,DOSBASE  ; tak - zapisz bazę biblioteki
                  move.l d0,a1       ; baza biblioteki do zamknięcia
                  jsr    -414(a6)    ; zamknij bibliotekę
          Error   rts                ; koniec programu
          DOSBASE    dc.l 0          ; zarezerwuj obszar pamięci (32 bity)
          DosName    dc.b "dos.library",0 ; zarezerwuj obszar pamięci na nazwę biblioteki

język C

          #include <libraries/dos.h>
          struct DosLibrary *DOSBase;
          main() {
            if(!(DOSBase=(struct DosLibrary *) OpenLibrary("dos.library",0L))) {
              printf ("%s\n","Brak biblioteki");
              exit(0);
            }
            CloseLibrary(DOSBase);
          }

język HS Pascal

          program PRZYKŁAD;
          uses Exec,AmigaDos;
          const LibName = "dos.library";
                LibVer = 0;
          var dosbase: ^dosbase;
          begin
            dosbase:=pdosbase(OpenLibrary(LibName,LibVer));
            if dosbase<>nil then begin
              CloseLibrary(pointer(dosbase));
              exit(0);
              end;
            else writeln ('Brak biblioteki');
          end.

Wśród wielu bibliotek najistotniejsze role pełnią:

Oprócz bibliotek znajdujących sią w ROM'ie Amigi, coraz większą popularność zdobywają biblioteki dyskowe, głównie wspomagające tzw. interfejs użytkownika (tzn. elementy ułatwiające ubsługę komputera). Typowym przykładem jest reqtools.library (autor Nico Francois). Popularność ta wynika w głównej mierze z możliwości stałego zaopatrywania się w nowsze, coraz lepsze wersje w przeciwieństwie do bibliotek z ROM'u, które są "montowane" na stałe.

Dane techniczne komputera Amiga

Komputerowa rodzina Amig składa się z kilku modeli, różniących sią między sobą ceną i możliwościami. Standardowo Amiga 500 jest wyposażona w:

Dyski elastyczne

Niemal wszystkie produkowane obecnie komputery osobiste wykorzystują jako pamięć zewnątrzną dyski elastyczne (ang. floppy disc, diskette). Mają one wiele zalet: są wygodne w użytkowaniu, proste w obsłudze, umożliwiają szybki dostęp do zapisanych informacji, są stosunkowo tanie i niezawodne.

Historia dysków elastycznych jest krótka. Na początku lat siedemdziesiątych koncern IBM opracował technologię wytwarzania 8-calowych dyskietek z przeznaczeniem dla nowych mikrokomputerów. Ze względu na nieporęczny format stosuje się je rzadko, raczej w starszych bądź profesjonalnych modelach (duża pojemność).

W 1976 roku firma Shugart opracowała tzw. mini-floppy czyli dyski o średnicy 5 1/4 cala. Rozwój techniki pozwolił na początku lat osiemdziesiątych na zaproponowanie nowych, jeszcze mniejszych dyskietek, tzw. micro-floppy. Zastosowane przez firmę Apple w modelu MacIntosh dyski 3 1/2 cala są trwałe i pojemne i zajmują mniej miejsca. Fira Amstrad spopularyzowała inny typ mikro-dysków - 3 calowe. Ze wzglądu na delikatność nośnik jest zamknięty w sztywnej kopercie z osłoną zakrywającą otwór dostępu do dysku. Mikrodyskietki są droższe od dysków 5 1/4 calowych, mimo to są stosowane coraz powszechniej. Rozwój technologii pozwala spodziewać się w bliskiej przyszłości dysków elastycznych o pojemnościach rzędu 10 MB.

Budowa dysku elastycznego jest bardzo prosta. Wewnątrz koperty ochronnej znajduje się plastykowy krążek, pokryty obustronnie warstwą magnetyczną z tlenku żelaza. Dzięki temu, że warstwa ta jest bardzo cienka, gęstość zapisu może być znacznie większa niż na np. taśmie magnetofonowej. Pozwala to na zapisanie na jednej dyskietce wielu kilobajtów danych. Jakość warstwy magnetycznej testuje się niekiedy tylko po jednej stronie dyskietki i wtedy sprzedawane są one jako jednostronne (oznaczone na kopercie jako SS od ang. single side; dyski dwustronne oznaczane są skrótem DS - ang. double side). W kopercie wycięte są cztery otwory:


Aby informacje z dysku zapisać lub odczytać, należy go umieścić w stacji dysków elastycznych (napęd, ang. drive). To dość złożone urządzenie jest odpowiednikiem magnetofonu - napędza nośnik i steruje pracą głowicy zapisująco-odczytującej. Po wsunięciu dyskietki do napędu włączany jest silnik nadający jej ruch obrotowy o stałej prędkości (zwykle 300 obr/min). Gdy zachodzi potrzeba zapisania lub odczytania informacji, uruchamiane jest ramię ze specjalną głowicą. Może ona poruszać się wzdłuż promienia dyskietki krokowo, co pozwala zapisywać dane na koncentrycznych kręgach - tzw. ścieżkach (ang. track). Minimalne zmiany położenia głowicy określają szerokość ścieżki, a co za tym idzie gęstość zapisu. Standardowo szerokość ścieżki wynosi około 1/2 mm (48 tpi - to znaczy 48 ścieżek/cal). Nowe napędy pozwalają zapisywać z gęstością 96 tpi (zapis z taką gęstością wymaga specjalnych dyskietek). Mikrodyskietki zapisywane są z gęstością 135 tpi, ich powierzchnia pokryta jest bowiem związkiem żelaza i kobaltu.

Coraz częściej stosowane są stacje dysków wyposażone w dwie głowice zapisująco-odczytujące. Umożliwiają one korzystanie z obu powierzchni dysku.

Organizacja danych na dysku

Na jednym dysku można zapisać kilkaset tysięcy bajtów (przykładowo od 100KB w pamięci dyskowej Atari 800 do 1.4MB w IBM PC/AT). Informacje zapisane na dysku mają specyficzną organizację. Pozwala ona na dobre wykorzystanie powierzchni nośnika i szybki dostęp do danych.

Informacje są zapisywane na koncentrycznych ścieżkach. Te z kolei są podzielone na fragmenty mieszczące taką samą ilość danych - sektory. Stanowią one najmniejszą dostępną porcję informacji - komputer może odczytać bądź zapisać co najmniej jeden sektor (rys. 2).

rys2.jpg

Taki podział nazywamy fizyczną organizacją dysku. System operacyjny komputera dzieli powierzchnię dysku na jednostki alokacji (ang. cluster) - tzw. podział logiczny. Jednostka alokacji jest najmniejszą częścią pamięci dyskowej przydzieloną plikom. Jednostka alokacji obejmować może jeden lub kilka sektorów. System operacyjny na podstawie numeru jednostki alokacji określa, które i ile sektorów należy odczytać bądź zapisać.

Po podaniu numeru ścieżki i sektora głowica ustawia się nad wybraną ścieżką i wśród zapisanych na niej bajtów wyszukuje początek szukanego sektora. Położenie początkowego sektora każdej ścieżki jest określane przez otwór indeksowy, a następnych przez odpowiedni zapis na ścieżce (tzw. soft sectoring) bądź przez kolejne otwory umieszczone obok indeksowego (tzw. hard sectoring). Na jednej ścieżce umieszcza się od 8 do 16 sektorów zawierających od 128 do 1024 bajtów. Liczby te zależą od zastosowanego formatu dysku. Format określa także rozmieszczenie i charakter dodatkowych pól zapisu, zawierających informacje sterujące. Choć próbowano ujednolicić strukturę systemów podziału dysków i zapisu na nich, to wiele firm stosuje własne formaty, co na ogół uniemożliwia czytanie dyskietek zapisanych przez jeden komputer na innym (najpopularniejszym formatem zapisu jest IBM 3740 System 34).

Metody zapisu informacji

Fizycznie zapis polega na namagnesowywaniu materiału na powierzchni dyskietki. Podstawową stosowaną tu metodą kodowania danych jest tzw. modulacja częstotliwości (FM), w której dla każdego bitu jest zapisywany impuls synchronizujący a następnie dodatkowy impuls dla logicznej jedynki (zeru odpowiada brak impulsu). Taka metoda zapisu jest niezawodna, ale wymaga zapisu dodatkowych impulsów - co zmniejsza gęstość zapisu (dyskietki przeznaczone do takiego zapisu określa się jako pojedynczej gęstości).

Dwukrotne zwiększenie upakowania bitów osiągnięto stosując zmodyfikowany zapis FM (MFM, kod Millera), w którym impulsy synchronizujące występują tylko w ciągu zer. Zapis ten, oznaczany na dyskach jako DD (podwójna gęstość), jest najczęściej spotykany w komputerach osobistych. Pozwala on na jednej stronie dyskietki zapisać około 180KB (w formacie systemu 34 - na dysku 5 1/4 cala).

Dyskietki oznaczone QD (poczwórna gęstość) przeznaczone są do stosowania w stacjach zapisujących w kodzie M2FM, który niemal podwaja ilość zapisywanej informacji przez dalszą redukcję impulsów synchronizacji. Zwiększenie gęstości zapisu wymaga rozbudowy układów interpretujących odczytywane sygnały. Pojemność dysku o średnicy 5.25 cala zwiększa się także przez taki sposób zapisu, jaki jest stosowany na dyskach 8 calowych (dwukrotnie większa częstotliwość sygnału synchronizującego, dyskietki oznaczone są niekiedy symbolem HD - od ang. high density).

Twórcy komputerów osobistych opracowali prostszą metodę zapisu, nie wymagającą dodatkowej synchronizacji (tzw.kodowanie grupowe - GCR). Każda paczka 4 bitów jest zamieniana na 5 bitów tak ustawionych, by występowały w nich maksymalnie dwa sąsiadujące ze sobą zera. Metoda GCR stosowana przez firmy Apple i Commodore pozwala na osiągnięcie podobnej gęstości zapisu jak przy MFM znacznie mniejszym kosztem.

Niezawodność działania dysku zwiększa się zapisując prócz danych także dodatkowe znaki kontrolne. (Metody zapisu informacji - rys. 3)

rys3.jpg

Układy sterujące

Głowica zapisująco-odczytująca jest urządzeniem analogowym a komputer wysyła informacje w postaci cyfrowej. Potrzebny jest zatem układ pośredniczący, kodujący dane. Nosi on nazwą sterownika (ang. controller). Na podstawie przesyłanych z komputera rozkazów steruje on ruchem głowicy, przetwarza kolejne bloki danych, analizuje znaczenie poszczególnych impulsów, wyznacza fizyczny adres transmisji itd.

Ten skomplikowany układ elektroniczny jest realizowany z wykorzystaniem systemu mikroprocesorowego (zwykle we wspólnej z napędem obudowie, np. stacja dysków Commodore 10541) bądź specjalizowanych układów scalonych wielkiej skali integracji; najpopularniejsze z nich to układy NEC 765 (odpowiednik 8275), WD 179X, 279X, zapisujące dane w systemie MFM. Informacje przekazywane są do komputera zazwyczaj równolegle (bajtami), choć w komputerach domowych stosuje się niekiedy transmisją szeregową, tzn. bit po bicie, np. w Commodore 64, Atari 800 XL. W dobrych systemach dane są transmitowane z prędkością dochodzącą do 250000 bitów/s.

Obecnie coraz większą popularność zdobywają (głównie ze względu na coraz niższe ceny) dyski twarde oraz optyczne (tzw. dyski CD).

Dostosowanie zewnątrznej stacji dysków

Dodatkowa stacja dysków stanowi swego rodzaju rozszerzenie pamięci masowej, umożliwiające lepsze wykorzystanie możliwości oferowanych przez komputer (np. programy użytkowe, gry). Praca na Amidze z jedną stacją dysków jest co najmniej trudna, a w niektórych przypadkach w ogóle niemożliwa.

Istnieją dwie możliwości rozwiązania tego problemu:

  1. kupno gotowej stacji,
  2. podłączenie napędu od komputera IBM.

Drugie rozwiązanie jest dużo tańsze.

Złącze stacji dysków w Amidze jest kompatybilne ze złączem Shugart stosowanym w popularnych "pecetach". Umożliwia to podłączenie w prosty sposób do czterech napędów (3.5" lub 5.25"). Napędy są wybierane (uaktywniane) jednym z czterech sygnałów /SELx, gdzie x jest numerem wybranego napędu. Ponieważ Amiga ma już jeden wbudowany napęd, tylko linie /SEL1, /SEL2 i /SEL3 są dostępne w gnieździe zewnętrznej stacji dysków. Linia /SEL0 jest podłączona do złącza wewnętrznej stacji dysków.

Tabela funkcji poszczególnych sygnałów złącza Shugart i ich mapowania ze złączem w komputerach Amiga:

Sygnał Złącze zewnętrznej stacji dysków Amigi Kierunek Złącze napędu 1.44 Opis
/SELx 21(/SEL1), 9(/SEL2), 20(/SEL3) 1) 10(/SEL0), 12(/SEL1), 14(/SEL2), 4(/SEL3) Amiga używa tych linii do wyboru jednego z czterech napędów. Za wyjątkiem linii /MTRx i /DRES wszystkie pozostałe sygnały są aktywne dopiero po ustawieniu jednego z sygnałów /SELx. W złączu zewnętrznej stacji dysków Amigi nie ma sygnału /SEL0.
/MTRx 8 2) 16 Normalnie linia ta jest używana do włączania silników wszystkich podłączonych napędów. Ponieważ jest ona podłączona do każdego z napędów, jej uaktywnienie spowoduje uruchomienie silników wszystkich napędów jednocześnie. Jest to rozwiązanie niedopuszczalne, dlatego też konieczne jest zastosowanie dla każdego z napędów prostego przerzutnika sprawdzającego stan linii /MTRx w momencie uaktywnienia sygnału /SELx odpowiadającego danej stacji. Wyjście przerzutnika jest podłączone do linii /MTR w napędzie. Umożliwia to niezależne włączanie i wyłączanie silników (by dany silnik zadziałał odpowiednia linia /SELx oraz /MTRx muszą być w stanie aktywnym) przy czym należy pamiętać, że testowanie linii /MTRx odbywa się przy zmianie poziomu linii /SELx ze stanu wysokiego na niski. Wyłączenie silnika wymaga następującej sekwencji: /SELx=1, /MTRx=1, /SELx=0, /SELx=1.
/RDY 1 3) 34 Po włączeniu silnika, linia /RDY (ReaDY) sygnalizuje Amidze osiągnięcie optymalnej prędkości obrotowej i gotowość do operacji zapis/odczyt. Linią można sterować bezpośrednio ze złącza napędu lub ustawiać w stan aktywny (niski) gdy sygnały /SELx oraz /MTRx mają stan aktywny (niski) - tzn. gdy napęd stacji został włączony. Jeśli silnik jest wyłączony linia ta jest używana do specjalnej identyfikacji (opisane dalej).
/DRES 10 - Linia /DRES (Drive RESet) jest podłączona do linii RESET Amigi i jest wykorzystana do inicjalizacji przerzutnika (przerzutników) co powoduje wyłączenie silników wszystkich aktywnych w danej chwili napędów.
/DKRD 2 30 Dane odczytywane z dysku w napędzie uaktywnionym przez /SELx przekazywane są do Amigi linią /DKRD (DisK Read Data). Podłączona jest ona do linii /DKRD w układzie Paula.
/DKWD 17 22 Analogicznie jak powyżej lecz dotyczy zapisu danych (DisK Write Data).
/DKWE 16 24 Linia /DKWE (DisK Write Enable) przełącza napęd z odczytu na zapis. Stan aktywny (niski) powoduje zapis na dyskietce.
SIDE 13 32 Linia SIDE wybiera stronę dysku na której ma się odbyć zapis/odczyt. Stan wysoki na tej linii powoduje wybranie strony (głowicy) o numerze 0 (dolna strona dyskietki).
/WPRO 14 28 Linia /WPRO (Write PROtect) sygnalizuje Amidze, że włożona do stacji dyskietka jest zabezpieczona przed zapisem. Stanem aktywnym tej linii jest stan niski.
STEP 18 20 Narastające zbocze sygnału na tej linii powoduje przesunięcie głowicy o jedną ścieżkę do przodu lub do tyłu w zależności od stanu na linii DIR.
DIR 19 18 Linia DIR (DIRection) wybiera kierunek przesuwu głowicy po impulsie STEP. Stan niski powoduje przesuwanie do środka dyskietki, wysoki zaś w kierunku obrzeża. Ścieżka 0 jest pierwszą ścieżką licząc od obrzeża.
/TK0 15 26 Linia /TK0 (TracK 0) jest ustawiana w stan aktywny (niski) jeśli głowica wybranego napędu znajdzie się nad ścieżką zerową.
/INDEX 22 8 Krótki pojedynczy impuls na tej linii jest wysyłany przez napęd w trakcie każdego obrotu dyskietki (między początkiem i końcem ścieżki).
/CHNG 11 34 4) Linia /CHNG (CHaNGe) sygnalizuje Amidze zmianę dyskietki. Dopóki dysk znajduje się w napędzie linia ta ma stan wysoki. Wykrycie zmiany stanu wymaga wybrania napędu (liniami /SELx oraz /MTRx) oraz przesunięcia głowicy (liniami DIR oraz /STEP - dobrze znane zjawisko "klikania", które jest konieczne do wykrycia momentu, w którym do kieszeni stacji zostanie włożona nowa dyskietka).
/INUSE - 5) 6 Linia istnieje tylko na złączu wewnętrznej stacji dysków Amigi. Jeśli komputer ustawi ją w stan aktywny (niski), napęd uaktywnia diodę LED sygnalizującą pracę stacji. Najczęściej linia ta jest podłączona do linii /MTRx i dioda zapala się w momencie gdy silnik stacji pracuje.
/REDWC - 2 Linia identyfikująca tryb pracy HD napędu (nieużywane w Amidze).

Do rozpoznania kiedy napęd jest podłączony do komputera używany jest specjalny tryb identyfikacji. Algorytm jest następujący:

  1. Linia /MTRx testowanej stacji jest włączana (/SEL=1, /MTRx=0, /SELx=0) a następnie wyłączana (/SELx=1, /MTRx=1, /SELx=0, /SELx=1).
  2. Poszczególne bity danych są odczytywane przez włączenie odpowiedniej linii /SELx (/SELx=1, /MTRx=1, /SELx=0), odczytanie stanu linii /RDY i wyłączenie linii /SELx (/SELx=0, /MTRx=1, /SELx=1). Operacja taka musi być powtórzona 32 razy. Pierwszy odebrany bit jest najbardziej znaczącym (MSB).

Poniżej przedstawione są wartości odpowiadające różnym napędom:

Wartość Oznaczenie Opis
$FFFFFFFF DRT_EMPTY Napęd nie podłączony (jako DRT_EMPTY zgłasza się wewnętrzna stacja dysków).
$00000000 DRT_AMIGA Standardowy napęd 3.5", 2x80 ścieżek po 11 sektorów (880 KB).
$AAAAAAAA DRT_150RPM Napęd zapewniający rotację dysku 150 obr/min (standardowo 300 obr/min) - wykorzystywane przy obsłudze dysków HD.
$55555555 DRT_37422D2S Napęd 5.25", 2x40 ścieżek.

Uwaga :!: Wszystkie sygnały dostępne na złączu Shugart napędu i w gnieździe EXTERNAL FLOPPY Amigi są aktywne w stanie niskim. Jest to spowodowane zastosowaniem buforów z otwartym kolektorem (74LS07).

Zasada działania

Różnice w wykorzystaniu niektórych sygnałów złącza Shugart stwarzają konieczność zastosowania prostego urządzenia tłumaczącego odpowiednie kody sygnałów. Zasadniczo problemy występują jedynie przy sygnale /MTRX, który odpowiada za włączanie silnika w danej stacji. W Amidze bowiem, zastosowano odmienny niż w komputerach PC sposób konfigurowania napędów.

             Przebieg sygnału /MTRX w komputerze Amiga.
          
                 ^ 
                /|\
            1   _|____________                   _____________
                 |            |                 |             
                 |            |                 |             
                 |            |                 |             
            0    |____________|_________________|________________\  
                 |                                               / t
                 |            ^                 ^
                              | --------------- |
                          moment zadziałania silnika
          

W przypadku pominięcia układu pośredniczącego, w chwili włączenia silnika w dowolnej stacji dysków nastąpi również włączenie silników w pozostałych napędach. Jest to sytuacja niedopuszczalna, grożąca utratą danych zapisanych na dysku lub "zawieszeniem" się komputera. Aby uniemożliwić włączanie się napędów w pozostałych stacjach dysków należy więc zastosować układ blokujący linię /MTRX (włączanie silnika) w przypadku gdy napęd nie jest wybrany linią /SELx.

Zasada działania układu jest więc prosta. Sprawdzany jest tylko stan linii /SELx odpowiadającej za wybór stacji dysków i dopiero wtedy gdy linia ta jest aktywna (wybrano stację) możliwe jest włączenie silnika oraz korzystanie z napędu.

W układzie zastosowano tanie i popularne układy scalone serii UCY74 o obniżonym poborze mocy (LS):

Układ scalony Opis
UCY 74LS38 cztery 2-wejściowe bramki NAND z wyjściami o otwartych kolektorach
UCY 74LS74 dwa niezależne przerzutniki typu D wyzwalane dodatnim zboczem, z wejściami PR i CLR


Wyzwalanie zboczem polega na tym, że w chwili gdy napięcie na wejściu zegarowym CLK zmienia się z poziomu logicznego 0 na 1, następuje przepisanie informacji z wejścia D na wyjście Q. Przerzutnik pozostaje w tym stanie do czasu pojawienia się kolejnego zbocza narastającego na wejściu zegarowym. Zmianę stanu przerzutnika można również wymusić podając do wejść asynchronicznych sygnały: kasujący CLR lub ustawiający PR.

Praca układu przebiega poprawnie, jeżeli podczas doprowadzenia dodatniego zbocza impulsu zegarowego napięcie na wejściu D będzie już ustalone na jednym z dwóch poziomów logicznych. W pozostałych przedziałach czasowych poziomy logiczne na wejściu D mogą się dowolnie zmieniać bez wpływu na stan przerzutnika.

             Tablica przejść przerzutnika typu D.
             ------------------------------------------------------
                   wejścia                      |    wyścia
             ------------------------------------------------------
                Preset   Clear    Clock    D    |   Q        Q'
             ------------------------------------------------------
                L        H        X        X    |   H        L
                H        L        X        X    |   L        H
                L        L        X        X    |   H        H
                H        H       0->1      H    |   H        L
                H        H       0->1      L    |   L        H
                H        H        L        X    |   Q0       Q0'   
             ------------------------------------------------------
          

przebiegi czasowe przerzutnika typu D

          ( Przebiegi czsowe przerzutnika typu D - rys. 7 )            

Schemat ideowy układu pośredniczącego jest przedstawiony na rys. 5.

schemat ideowy interfejsu


Gdy linia /SELx odpowiedniego napędu zostanie ustawiona w stan aktywny (niski), wówczas bramka B1 (LS38) pracująca jako inwerter poda sygnał wysoki na wejście CLK przerzutnika (nastąpi zmiana poziomu sygnału z 0 na 1 logiczną). W tym momencie badany jest stan linii /MTRX odpowiadającej za włączenie silnika w wybranej stacji. Linia ta jest podłączona do wejścia D przerzutnika i jeżeli jest ona w stanie aktywnym (niskim) to informacja ta zostanie przepisana na wyjście Q, które steruje liniami /INUSE i /MTR napędu. Spowoduje to włączenie silnika oraz diody sygnalizującej pracę stacji dysków. Sygnalizacja osiągnięcia odpowiedniej prędkości obrotowej (linia /RDY) nie jest obsługiwana. Bramka B2 (LS38) realizuje funkcję związaną z właściwą identyfikacji napędu. Sterowanie liniami /MTRX oraz /SELx powoduje odpowiednie ustawienie linii /RDY, którą można odczytać z poziomy Amigi. Powtórzenie tej operacji 32 razy spowoduje odczytanie identyfikatora napędu (algorytm opisany wcześniej).

Linia /DRES Amigi jest podłączona do wejścia asynchronicznego PR (ustawianie) przerzutnika D co w przypadku uaktywnienia tej linii (np. reset komputera) spowoduje wyłączenie wszystkich aktywnych napędów i inicjalizację przerzutnika.

Rezystory zastosowane w układzie dopasowują poziomy napięć do układów scalonych oraz zapewniają właściwe ustawienie przerzutników po włączeniu zasilania lub po restarcie komputera.

Dalsza rozbudowa układu możne polegać na wykorzystaniu "drugiej połowy" każdego z układów scalonych do np. zbudowania analogicznego układu dla kolejnej stacji dysków. W takim przypadku należy podłączyć wejścia bramki B1 do linii /SEL2 (napęd będzie widziany jako DF2:)

W niektórych napędach wymagane jest dodatkowo odpowiednie ustawienie zworek (jumperów). Jest to operacja prosta pod warunkiem, że napęd był przy zakupie wyposażony w instrukcję obsługi w której podano ich dokładny opis.

UWAGA :!: Napędy 1.4MB doskonale nadają się do podłączenia do Amigi ale będą rozpoznane jako standardowe stacje dysków 880kB (takie stacje operują z szybkością 500kbit/s gdy Amiga spodziewa się 250kbit/s). Posiadają one dodatkowy czujnik umożliwiający wykrycie dyskietek HD za pomocą specjalnego otworu w kopercie dyskietki. Bez zasłonięcia tego otworu dyski HD nie będą współpracowały z Amigą.

Dodatkowe zabezpieczenie programów przed zakłóceniami (wirusy)

Każdy użytkownik komputera wie, co to jest wirus komputerowy. Może on spowodować zakłócenia funkcji procesora lub zniszczyć zbiory danych. Kradnie też czas procesora i miejsce w pamięci komputera. Wielu jeszcze pamięta wirusa Michael Angelo, który atakuje komputery osobiste. Głośno było o nim w radiu i prasie, nawet stacje telewizyjne poświęcały mu całe audycje. Ten do tej pory jedyny w swoim rodzaju zgiełk ucichł 6 marca 1992 roku, ponieważ w tym dniu wirus stał się aktywny. Jeśli zaraził się nim jakiś komputer PC, to uległ w nim bezpowrotnemu zniszczeniu FAT (File Allocation Table) przez wymazanie wszystkich danych w tym środowisku. Dalej sięgającym szkodom można było zapobiec dzięki szeroko zakrojonej kampanii uświadamiającej.

Ale nie zawsze bywa tak dobrze. Banki i instytucje publiczne ukrywają swoje problemy z wirusami czy to z powodów prestiżowych, czy też dla ochrony swych danych. W wyniku takiego postępowania niebezpieczeństwa grożące ze strony wirusów i szkody przez nie wyrządzane są ukrywane. Rzadko dowiadujemy się o procesach wytoczonych programistom tworzącym wirusy. Wirusy można znaleźć wszędzie: od komputerów osobistych poczynając i na wielkich urządzeniach obliczeniowych kończąc.

Liczba wirusów zagrażających Amidze wzrasta każdego roku kilkukrotnie. Jeszcze przed trzema, czterema laty można je było policzyć na palcach. Teraz jest ich około 300.

Sposób działania wirusów jest stosunkowo prosty. Większość systemów operacyjnych ma tabele skoków (ang. jump table) do wewnętrznych funkcji i procedur. Wirus przechwytuje określony adres (wektor) z tabeli skoków i przeadresowuje go do własnego kodu. Jednocześnie zapamiętuje pierwotne miejsce wejścia do rozkazu wykonania funkcji w systemie operacyjnym. Jeśli teraz jakiś program (program - "gospodarz") wywoła tę funkcję, to jednocześnie uaktywnia wirusa, ponieważ rozkaz zostaje przekierowany do jego kodu. Wirus zaczyna działać natychmiast, np. zakażając zbiór danych czy wygaszając ekran monitora. Jednocześnie wirus przekazuje także właściwy rozkaz wykonania określonej funkcji do systemu operacyjnego. Tym samym ani program, ani jego użytkownik nie nabierają podejrzeń. Pozornie nic sią nie zdarzyło. Zasada działania wirusa jest przedstawiona na rys. 4)

rys4.jpg


Pierwsze wirusy napisane dla komputera Amiga bazowały na ogólnie znanej zasadzie - zapisywały się na bootblock'u. Tego typu wirusy zajmują dwa pierwsze sektory dysku, wykorzystując tym samym cechę systemu operacyjnego, który pozwala na automatyczne uruchamianie programu po włożeniu dyskietki do stacji dysków. W ten sposób, po włożeniu nowej dyskietki wirus zaraża ją, wpisując kod wirusa w dwa pierwsze sektory dysku. Dodatkowo, wirusy tego typu korzystają z innych, specyficznych właściwości systemu np. wykorzystują fakt restartu komputera do inicjalizacji swojego kodu.

Ostatnio pojawiły się inne wirusy, działające na zupełnie odmiennych zasadach. Chodzi o wirusy typu link dołączające się do innych programów tak, że podczas uruchomienia zarażonego programu zostaje uruchomiony także i wirus.

Istnieje szereg metod zabezpieczania się przed wirusami. Popularne są programy pozwalające wykryć, zidentyfikować oraz zniszczyć niepożądanego gościa.

Zupełnie odmienną metodą jest zabezpieczenie sprzętowe sygnalizujące, bądź uniemożliwiające zapisanie się wirusa na dysku (na dwóch pierwszych sektorach dysku). Zazwyczaj te proste urządzenia działają w oparciu o generator akustyczny włączany gdy głowica stacji dysków podczas zapisu znajdzie się nad ścieżką zerową (bootblock).

W gnieździe EXTERNAL DRIVE w Amidze dostępne są linie:

Złącze Opis
/TK0 Linia przechodzi w stan aktywny (niski) gdy głowica stacji dysków znajdzie sią nad ścieżką zerową
/DKWE Linia przechodzi w stan aktywny (niski) gdy aktualnie przeprowadzaną operacją jest zapis informacji na dysk


W urządzeniu zastosowano następujące układy scalone :

Układ Opis
UCY 74LS02 cztery 2 - wejściowe bramki NOR
UCY 74LS04 sześć inwerterów


anyty-wiarus ;-)


Schemat ideowy układu jest przedstawiony na rys. 6.

Linie /TK0 i /DKWE są połączone bezpośrednio do bramki B1 (NOR), dzięki czemu w chwili wystąpienia stanu aktywnego (niskiego) na obu liniach, na wyjściu bramki otrzymamy wysoki stan logiczny. Poprzez inwerter I1 nastąpi uruchomienie generatora akustycznego zbudowanego z inwerterów I2 oraz I3.

Generator akustyczny wytwarza falę zbliżoną do prostokątnej, o dużej zawartości harmonicznych. Częstotliwość można określić za pomocą wzoru:

                        f[Hz] = 3 * R[Om] * C[F]

Słowniczek

Hasło Opis
Adres Liczba identyfikująca komórkę pamięci.
Agnus Układ odpowiedzialny za obsługę DMA w Amidze.
Animacja Sekwencyjna zmiana obrazu wywołująca wrażenie płynnego ruchu.
Asembler Język programowania najniższego poziomu. Jedna instrukcja asemblera odpowiada jednej instrukcji procesora.
Bajt Podstawowa jednostka informacji. Przechowuje jeden znak, najczęściej może przechować liczbę z zakresu 0-255. Są też jednostki pochodne - kilobajt (KB), megabajt (MB) itd.
Bit Najmniejsza jednostka informacji. Przechowuje informacje typu TAK/NIE (0/1).
Biblioteka Zbiór procedur i funkcji realizujących określone zadania. Np.: graphics.library, exec.library
Blitter Koprocesor w Amidze wykonujący operacje przesyłania danych. Może wykonywać operacje logiczne.
CHIP RAM Pamięć RAM do której mają dostęp kanały DMA.
Copper Jeden z koprocesorów Amigi, odpowiedzialny za wyświetlanie obrazu.
Denise Układ specjalizowany odpowiedzialny za grafikę.
DMA Direct Memory Access - (dosł. bezpośredni dostęp do pamięci) sposób dostępu do pamięci przez urządzenia zewnętrzne i koprocesory, bez udziału procesora głównego. Siła Amigi leży w dużej liczbie kanałów DMA. W ten sposób komputer może wykonywać wiele czynności jednocześnie nie obciążając procesora.
DOS Disk Operating System - system dyskowy - zarządza informacjami na dyskach.
FAST RAM (dosł. szybka pamięć) Typ pamięci dostępnej wyłącznie dla procesora.
HAM (ang. Hold and Modify) Tryb graficzny na Amidze pozwalający uzyskać 4096 barw i odcieni.
Multitasking (dosł. wielozadaniowość) Mechanizm działania systemu operacyjnego umożliwiający jednoczesne działanie wielu programów na jednym komputerze.
Piksel Najmniejszy punkt na ekranie.
RAM Random Access Memory (dosł. pamięć o swobodnym dostępie), pamięć z możliwością zapisu i odczytu, zawartość tej pamięci jest tracona po zaniku zasilania.
ROM Read Only Memory (dosł. pamięć tylko do odczytu), pamięć której zawartości nie można zmieniać (jej zawartość nie jest tracona po zaniku zasilania).
Sprite (ang. duszek) Obiekt graficzny na ekranie, całkowicie niezależny od tła po którym się porusza.

Literatura

Książki


Czasopisma

1) , 3) z pominięciem interfejsu
2) poprzez interfejs
4) w napędach dedykowanych Amidze sygnał /CHNG jest dostępny na pin 2
5) pin 4 wewnętrznego złącza w Amidze