QMEG OS

From Atariki

Revision as of 21:34, 10 wrz 2005; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

Alternatywny system operacyjny dla atari stworzony przez Stefana Dorndorfa. 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.

Poniżej znajduje się opis ostatniej istniejącej wersji systemu, napisany przez Jurgiego w magazynie Syzygy

Grafika:Qmeg_404.jpg


Qmeg+ OS ver. 4.04 - instrukcja obsługi
Autor:Jurgi 2/Tristesse

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 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 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'.

  • O - W przypadku napędów Happy Warp i Speedy - wyłączenie szybkiej transmisji (tryb slow). Ten sam klawisz w kombinacji z Shift włącza tryb "absolute slow", czyli blokadę rozszerzeń stacji działającą aż do jej fizycznego zresetowania.
  • I - Funkcja odwrotna do O. Powoduje zainicjiowanie stacji Happy Warp lub Speedy i powrót do szybkiej transmisji, nie wychodzi jednak z trybu "absolute slow" - do tego potrzebna jest kombinacja Shift + I, która powoduje reset stacji odpowiadający jej wyłączeniu i ponownemu włączeniu.
  • Ctrl + I - w stacjach Speedy powoduje wyczyszczenie wewnetrzego bufora (cache).
  • 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 BASICu (jest on 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ść (po naciśnięciu L Qmeg czyta dodatkowo pojedynczy sektor z pierwszej scieżki by ustawić gęstość, można tę funkcje zablokować odczytując katalog przy pomocy ; - to jedyna różnica w działaniu tych dwóch klawiszy). Można także wczytywać programy naciskajac klawisze 1 - 8 w kombinacji z Shift. W tym wypadku nie jest zmieniany stan interpretera BASICa i nie jest czyszczona pamięć przed wczytaniem programu (przydatne przy plikach binarnych wymagających włączonego BASICa).
  • Shift + L / ; - jak wyżej - obsługa gęstości Quad z BiboDOS lub Turbo-DOS. 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 zezwala na używanie DLI podczas i/o. Zapobiega to zawieszaniu sie w czasie wczytywania programów zawierajacych np czołówke (w trakcie wczytywania) wykorzystująca przerwania DLI. Jeśli procedura obsługująca te przerwania bedzie umieszczona przypadkowo w obszarze $4000-$7fff, to w chiwili dostepu do pamieci rozszerzonej moze dojść do zawieszenia systemu.
G25 - Powoduje, że ramdysk X (standardowo 130kb pojemności) jest zgodny z ramdyskiem zakładanym przez Atari DOS 2.5 (128kb pojemności).
VBS - standardowo wył. Opcja znacząca w czasie operacji i/o na ramdysku. Włączona powoduje synchronizowanie dostepu do ramdysków z przerwaniami VBI. Powoduje to znaczne spowolnienie wczytywania z ramdysków (50 sektorów/s). Ogranicza migotanie ekranu w czasie operacji i/o, jesli obraz umieszczony jest w obszarze $4000-$7fff. A także zabezpiecza przed zawieszeniem systemu , analogicznie jak EDI dla przerwań DLI.

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 rozpracowałem jeszcze wszystkich bajtów tablicy ustawień,


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!

Personal tools