QMEG OS
From Atariki
Alternatywny system operacyjny dla atari stworzony przez Stefana Dorndorffa Cechuje go natywna obsługa Ultra Speed oraz obsługa dodatkowego układu PIA działającego jako port w standardzie Centronics. Dostępnych jest kilka wersji mniej lub bardziej zmodyfikowanych.
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.
Qmeg+ OS ver. 4.04 - instrukcja obsługi --------------------------------------------------- Jurgi 2/Tristesse --- Syzygy 8 Preview Qmeg "+" to nowa wersja (v. 4) znanego systemu operacyjnego na małe Atari. Qmeg jest systemem wysoce kompatybilnym ze standardowym systemem Atari, a oferuje wiele przydatnych i wygodnych opcji. Większość funkcji jest identyczna, jak w starszej jego wersji - v. 3. Proszę przy tym zauważyć, że wszytkie wersje sygnowane przez Gumiego/Tight są nadal wersją v. 3 (z niewielkimi przeróbkami), nawet, jeśli wyświetlają napis "version 4.x"! Autorem Qmega jest Niemiec, Stefan Dorndorf. Qmeg znajduje się na 16 KB epromie, który zastępuje standardowy rom. Przydatną rzeczą jest przełącznik systemów - zawsze istnieje możliwość, że źle napisany program nie pójdzie ze zmodyfikowanym systemem. Ja system ten dostałem z sieci, bez oryginalnej instrukcji. Wszystkie zawarte tu informacje pochodzą z moich własnych doświadczeń (kilka też z krótkiego opisu w magazynie Serious). Z pewnością instrukcja ta nie jest kompletna, dlatego osoby, które mają na temat tego systemu jakieś informacje bardzo proszę o info! Pisząc ten artykuł założyłem, że czytelnik ma już jakieś pojęcie o Qmegu v. 3. Czego nowy Qmeg nie ma: Brak pełnego handlera magnetofonu (C:). Zastępuje go Cas-simulator (tylko odczyt, nie można bootować z kasety). Brak międzynarodowego zestawu znaków (wszystkie próby odwołania do niego (poke 756,204) będą przez system ignorowane - przywracany będzie zestaw standardowy. Brak self-testu. Czego brak w porównaniu do versji 3: - Brak ramdysku C (nie ma możliwości wystartowania DOSa przez Control + Caps w menu). - Nie ma mrugającego kursora. - Brak ochrony ramdysku przez zapisem (P w menu). - Brak możliwości skoku pod wektor użytkownika poprzez kombinację Control + 8. - Prawdopodobnie nie ma własnych procedur dla drukarki (dodatkowego PIA). - Nie współpracuje z TTP (Tight Tools Packed). Co nowy Qmeg ma w porównaniu z v. 3: + Ustawienia dla każdej stacji 1-8 (a nie tylko 1-4 i 8). + Automatyczne rozpoznawanie rodzaju dopalacza w stacji (rozpoznaje też większą ich ilość). + Możliwość bootowania z każdej stacji 1-8. + Klawisze funkcyjne a'la 1200XL. + Klawisze funkcyjne do konfiguracji stacji 1. + Przełącznik resetu ciepły/zimny. + Loader Qmega w menu ładuje i uruchamia również programy w Atari Basicu. + Loader rozpoznaje gęstości 360 kB i 720 kB w formacie MyDOSa, oraz podkatalogi MyDOSa. + Umożliwia ochronę przerwań w obszarze $4000-$7fff podczas operacji i/o na ramdysku. + Możliwość wyłączenia wszystkich funkcji Qmega (poza kombinacjami z Reset oraz mini-freezerem). + Kombinacja Select + Reset przejmuje kontrolę nad każdym kartridżem. + Mini-freezer, freezowanie na dodatkową pamięć. + Mini-freezer dla poków. + MLM zawiera edytor sektorowy, można też przeglądać pamięć pod ROMem i XMS. + Nowy Qmeg zawiera również (w przeciwieństwie do starego) procedury obsługi "New Devices" - urządzeń podłączanych do szyny równoległej, więc działają z nim np. interfejsy dysku twardego, czy też stacje Karin Maxi. Wygląd nowego Qmega Bootując kompa z wciśniętym klawiszem Select ujrzymy prawdopodobnie coś takiego: Qmeg+OS 4.04 (c) '97 S. Dorndorf Q M E G M E N U ------------------------------------------ Cold | Drive 1 2 3 4 5 6 7 8 X Y | EDI KEY Ram | Mode F F F F F X Y Y S S | G25 VBS ------------------------------------------ Zacznijmy od lewej części ekranu. Słowo Cold informuje, że po reset nastąpi zimny start systemu + boot. Kiedy w tym miejscu jest słowo Warm - nastąpi jedynie ciepły reset. Niżej widnieje status obszaru $8000-$bfff. 'Ram' oznacza, że jest tam włączony RAM, 'Bas' oznacza włączony Basic, 'Car' - włożony do gniazda zewnętrzny kartridż. Klawisze: - Tab - przełącza reset Cold/Warm (zimny/ciepły). - A - włącza RAM w obszar $8000-$bfff. - B - włącza Basic. - C - włącza zewnętrzny kartridż. - Start + A - włącza RAM i uruchamia DOSa, jeśli jest w pamięci. - Start + B - włącza i uruchamia Basic pod warunkiem że jest w pamięci DOS, lub program w Basicu. Nie można niestety (?) w ten sposób uruchomić samego Basica. Jeśli w pamięci jest program w Basicu, to zostanie uruchomiony automatycznie. - Start + C - uruchamia kartridż. Środek menu - operacje i/o Widać tu konfigurację wszystkich stacji, oraz obu ramdysków. Klawiszologia: - Space , + , * - poruszanie kursorem - wybór napędu 1-8 do skonfigurowania. - 1 - 8 - bezpośredni wybór napędu. - N - ustawia stację normal dla wybranego napędu. - F - ustawia stację z turbo. Rodzaj turbo jest rozpoznawany automatycznie. Qmeg obsługuje następujące standardy (i zgodne z nimi): - Speedy (Ultra Speed), - Happy Warp (Warp i Ultra Speed), - 1050 Turbo (Turbo Drive), - US-Doubler (Ultra Speed), - XF551 (High Speed). Stacje z rozszerzeniem Toms będą pracować w Ultra Speed. Jeśli stacja nie obsługuje żadnego z tych systemów, wtedy Qmeg przełączy jej ustawienie na normal samoczynnie podczas następnego i/o, nie potrzeba więc już przełączać ręcznie. - X - ustawia ramdysk X dla wybranej stacji. - Y - ustawia ramdysk Y dla wybranej stacji. Jeśli ustawi się ramdisk dla napędu 1, to można z niego bootować. - Shift + 1 - 8 - pozwala wybrać z której stacji chcemy bootować. Wybrana stacja jest podmieniana ze stacją numer 1 i jako 1 widziana. - S - ustawia oba ramdyski (X i Y) na gęstość single (oznaczenie: "S S"). - M - ustawia ramdysk X na gęstość medium, zaś ramdysk Y na niepełny single (oznaczenie: "M E"). - D - ustawia ramdysk X na gęstość double, ramdysku Y nie ma (oznaczenie: "D -"). - R - kopiuje zaznaczony napęd do ramdysku X. - W - kopiuje ramdysk X do zaznaczonego napędu. Po wybraniu R lub W pojawi się napis Read lub Write i numer wybranej do odczytu/zapisu stacji. Należy wówczas nacisnąć: - Start - aby sformatować dysk docelowy (napęd lub ramdysk) przed rozpoczęciem kopiowania. - Select - aby skopiować bez formatowania. Jeśli wystąpi błąd i/o pojawi się komunikat z numerem błędu i numer sektora, w którym pojawił się rzeczony błąd (oba w hex). Możemy wtedy wybrać opcje: - Start - ponów próbę odczytu/zapisu sektora. - Select - pomiń sektor. - Option - przerwij kopiowanie. Zawartość kopiowanego sektora pokazywana jest na ekranie (w kodach ekranowych). Opcji R/W można używać jako kopiera, lub aby zabootować program z ramdysku. Można też kopiować pomiędzy ramdyskami. - Shift + R - wczytanie zafreezowanego programu z dysku/ramdysku. - Shift + W - nagranie zafreezowanego programu na dysku/ramdysku. W obu powyższych opcjach postępujemy identycznie, jak przy R/W . Przy komunikacie Read/Write pojawia się litera 'F'. - I , O - te funkcje prawdopodobnie uruchamiają dodatkowe funkcje napędów Happy Warp i Speedy, prawdopodobnie będą to wł/wył modułu 'slow', oraz programowy reset stacji. Niestety, nie mogę tego sprawdzić. Klawisze te są aktywne również łącznie z Shift (I, O) lub Control (I). - L lub ; - dir/load. Każde kolejne naciśnięcie pokazuje następne 8 plików z katalogu zaznaczonej dyskietki. Z prawej strony podawana jest gęstość dysku. Funkcja load obsługuje również dyskietki w gęstości dwustronnej i format MyDOSa. Można także używać podkatalogów MyDOSa! Naciśnięcie klawiszy 1 - 8 spowoduje wczytanie i uruchomienie programu lub wejście do podkatalogu. Uruchamiany program maszynowy musi być w formacie Atari DOSa (dwa bajty $ff na początku). Loader wczytuje też i uruchamia programy w Atari Basicu (Basic jest włączany automatycznie). Program musi być stokenizowany (nagrany instrukcją SAVE, listingi w ATASCII nagrane przez LIST nie są ładowane!). Stacja XF551 zostanie w razie potrzeby przełączona na prawidłową gęstość. - Shift + L / ; - jak wyżej. Znaczenia tej funkcji na razie nie znam. W miejscu gęstości dysku wyśw. 'Q'. Prawa strona menu - opcje specjalne Są to opcje: KEY, EDI, G25, VBS. KEY - standardowo włączona, zezwala na używanie klawiszy funkcyjnych Qmega w edytorze systemowym. EDI - standardowo wył. Opcja znacząca w czasie operacji i/o na ramdysku. Włączona prawdopodobnie zezwala na używanie DLI podczas i/o. G25 - jeszcze nie rozgryzłem. Pomóżcie! VBS - standardowo wył. Opcja znacząca w czasie operacji i/o na ramdysku. Włączona prawdopodobnie zezwala na używanie VBI podczas i/o. Włączenie EDI, G25 i VBS spowalnia ramdysk ok. 3 razy. Właściwe ustawienie tych opcji umożliwia jednak odpalenie niektórych programów, które bez tego nie pójdą, ponadto zwykle zapobiega .telepaniu" ekranem oraz różnym innym .krzakom" w trakcie transmisji. Inne - Esc - wraca do DOSu, jeśli jest on w pamięci, pod warunkiem, że przełącznik resetu jest ustalony na Warm. Jeśli jest w pozycji Cold nastąpi boot. - Shift + Inverse - .kontrolowany" zimny start, to znaczy boot bez pełnego zimnego resetu (np. bez sprawdzania klawiszy Start i Option). - Return - skok do Mashine Language Monitor, MLM version 2.3 obsługuje się identycznie jak wersję 2.1 w Qmegu v. 3. - Bk Sp - czyści tablicę ustawień Qmega i powoduje zablokowanie jego funkcji (poza kombinacjami z klawiszem reset, przeł. Cold/Warm, mini-freezerem i MLM). Opcje specjalne są nieaktywne, w miejscu ustawień stacji i ramdysków pojawia się '-'. Oczywiście stacje pracują tylko w normalu, ramdysków nie ma. - < - Przywraca funkcje Qmega i ustawia tablicę na wartości początkowe. Kombinacje z klawiszem reset - Reset - powoduje ciepły/zimny start, w zależności od ustawienia Qmega. Działa standardowo. - Select + Reset - przejście do menu Qmega. Przejmuje kontrolę nad każdym kartridżem! - Shift + Reset - zimny start. - Start + Reset - zablokowanie funkcji Qmega (sprawdzany tylko przy zimnym starcie). - Option + Reset - włączenie Basica (sprawdzany tylko przy zimny starcie). Funkcyjne klawisze systemowe Poniższe kombinacje działają w MLM, DOSie oraz w programach użytkowych, pod warunkiem że ROM nie jest odłączony, a systemowe przerwania klawiatury nie jest zablokowane. - Control + 4 - stuk klawisza on/off. - Control + 5 - autorepetycja wolna/normalna. - Control + 6 - wyłączenie ekranu. Włączenie za pomocą dowolnego klawisza. Klawisz przywracający nie jest maskowany, więc proponuję Ctrl+Shft+A. - Control + 7 - kursor na lewą krawędź ekranu. - Control + 8 - kursor na prawą krawędź ekranu. - Control + 9 - kursor na górną krawędź ekranu. - Control + 0 - kursor na dolną krawędź ekranu. - Shift + Control + N - stacja #1 normal. - Shift + Control + F - stacja #1 turbo. - Shift + Control + / - ramdysk X jako stacja #1. - Shift + Control + Inverse - ramd. Y jako st. #1. Mini freezer dla poków Ta funkcja działa zawsze, jeśli nie jest wyłączony ROM. Nawet, jeśli klawiatura jest zablokowana! - Control + Help - wejście do freezera. Program jest freezowany (zatrzymywany), aby niczego nie popsuć. Poki musimy zatem wprowadzać .na ślepo". Wprowadzamy je szestnastkowo w formacie: xxxxyy - gdzie: xxxx - adres, yy - bajt. - 0 - 9 , A - F - wprowadzanie poków. - Bk Sp - zmazanie ostatniej cyfry. - Clear - zmazanie całego wprowadzanego poka. - Return - zatwierdza wprowadzonego poka. - Space - wyłączenie dźwięku. - Help - wyjście z freezera. W celu uniknięcia pomyłek wyłączona jest autorepetycja klawiatury. Również dla ułatwienia i orientacji słuchowej podczas wprowadzania poków każda wprowadzana cyfra i funkcja jest potwierdzana krótkim piskiem. Długi pisk oznacza, że wprowadziliśmy coś niezgodnie z wymaganym formatem. Spacja poza wyłączeniem dźwięku nie robi nic innego, więc można użyć jej do oddzielenia adresu od bajtu (chociaż nie trzeba). Wyciszany jest jedynie dźwięk, inne rejestry pokeya nie są ruszane, aby po powrocie do programu nie psuł się dźwięk. Mini-freezer, freezowanie na dodatkową pamięć Aby skorzystać z tej funkcji niezbędne jest minimum 64 KB xms'u. Aby skorzystać z freezera naciskamy (tak samo, jak kiedy chcemy wprowadzić poki) Control + Help. Program zostaje zatrzymany, a my mamy wtedy do dyspozycji klawisze: - Control + S - zafreezowanie działającego programu na dodatkową pamięć ('save'). - Control + L - załadowanie i uruchomienie zafreezowanego programu ('load'). - Control + E - oba powyższe naraz, czyli zamiana działającego programu na ten zafreezowany (aktualny zostaje zafreezowany; 'exchange'). Te funkcje wychodzą jednocześnie z mini-freezera, więc nie trzeba naciskać klawisza Help. W menu systemu możemy zafreezowany program nagrać na dysk (Shift + W), albo go odczytać (Shift + R). Qmeg wykorzystuje do zafreezowania programu banki używane przez ramdysk X. Przy nagrywaniu zafreezowanego programu na dysk, musi on być sformatowany w takiej samej gęstości, jak ramdysk X (lub w takiej zostanie sformatowany, zależnie od tego, czy naciśniemy Start, czy Select). To samo tyczy się nagrywania na ramdysk Y. Można jednak zmieniać format ramdysku X również wtedy, gdy mamy na nim zafreezowany program - nie powoduje to kłopotów w działaniu freezera (i opcji dyskowych), ani też tym bardziej utraty danych. Jeśli zatem ładując z dysku zafreezowany program nie chcemy psuć ramdysku Y, to zmieniamy format ramdysku X na taką samą gęstość, w jakiej jest nagrany dysk, wczytujemy bez formatowania ramdysku (Select zamiast Start), a po załadowaniu przywracamy poprzednie ustawienie. Ponieważ freezowany pogram zajmuje tylko 64 KB, to ramdysk Y nie zostanie uszkodzony, nawet jeśli odczytywać będziemy z dysku w double! Oczywiście pod warunkiem że ładować będziemy przez 'Shift+R', a nie samo 'R' - polecenia te są bowiem do pewnego stopnia zamienne! Mogą wystąpić problemy przy odmrażaniu jakichś źle napisanych programów, niechlujnie (niestandardowo) używających rejestrów sprzętowych. Problemy takie mogą wystąpić również w przypadku używania przez program rejestrów sprzętowych, które są jedynie do zapisu (nie można ich odczytać). Np. dwie uruchamiane naprzemiennie (Control+E) gry używają w odmienny sposób sprite'ów. Tablica ustawień Tablica ustawień Qmega zajmuje 11 bajtów. Oto niektóre z nich: Konfiguracja napędów zajmuje 8 bajtów. Znajduje się w tym samym miejscu, co w Qmegu v. 3 i jest z nią kompatybilna. Status 'F' w Qmegu v. 4 odpowiada statusowi 'U' w Qmegu v. 3 Tablica znajduje się od odresu $03f0 - jeden bajt dla każdej stacji. Dopuszczalne są następujące wartości: - $00 - stacja normal ('N'). - $01 - stacja turbo ('F'). - $02 - ramdysk X ('X'). - $03 - ramdysk Y ('Y'). Konfiguracja ramdysków zajmuje jeden bajt pod adresem $03ed. Nie jest kompatybilna z Qmegiem v. 3 (znajduje się w innym miejscu). Lewy nibbl oznacza format ramdysku X. Ramdysk Y jest zdeterminowany. - $0x - X single (Y single, "S S") - $8x - X medium (Y niepełny (64kB) single, "M E"). - $2x - X double (Y - brak, "D -"). Prawy nibbl ustala opcje specjalne w menu Qmega. Każdy bit odpowiada jednej opcji. Standardowo jest tu: % 0 0 0 1 / | | \ VBS / \ KEY G25 EDI Banki używane przez ramdysk Na komputerze z 1088 KB (rambo) i 576 KB (Compy Shop), ramdysk double używa następujących banków: EF EB E7 E3 AF AB A7 (A3 nie jest używany) 6F 6B 67 63 Ponieważ rozszerzenie do 1088 kB wyczerpuje wszystkie możliwe kombinacje, więc także posiadacze innych (mniejszych) rozmiarów powinni znaleźć dane w bankach o tych numerach. Na zakończenie Jak już powiedziałem na początku, system ten musiałem rozpracować sam i z pewnością instrukcja ta nie jest kompletna. W szczególności ma ona następujące luki: - nie rozpracowałem edytora sektorowego (powinien się znajdować w MLM), oraz sposobu przeglądania i zmieniania pamięci XMS i pod ROMem, - nie wiem, co robią funkcje I i O w menu, a także opcja Shift + L / ; , - nie rozpracowałem jeszcze wszystkich bajtów tablicy ustawień, - nie wiem, jakie znaczenie ma opcja G25 i nie jestem pewien, czy EDI/VBS włączają przerwania, czy też może robią coś innego. Być może nie znalazłem również innych jeszcze funkcji. Jeśli ktoś znajdzie jakieś nieuwzględnione przeze mnie funkcje, może rozwiać wątpliwości lub poprawić ewentualne błędy, wreszcie wszelkie komentarze, pomysły, uwagi proszę przesyłać do mnie (adres w stopce magazynu), ew. do Vaska. Jurgi II/Tristesse Niech MOS będzie z Wami!