Serdeczne podziękowania są dla Janusza Cebuli i Waldemara Bolesty za pomoc w realizacji tego artykułu !!! 1.Wstęp System operacyjny QMEG OS V3 przeznaczony jest dla komputerów ATARI 800XL lub 1300XE. System może zarządzać RAM dyskami. Wykorzystywanie dodatkowej pamięci (do 192 KB) realizowane jest poprzez 16 KB banki pamięci w zakresie adresów $4000-$7FFF. Sterowanie bankami odbywa się przez PORTB ($D301). QMEG obsługuje wszystkie kompatybilne ze standardem PERCOM "przyspieszacze" dla dysków 1050 (Happy, Speedy, Turbo). Dodatkowo, można tez przy pomocy drukarki EPSON wydrukować cały zastaw znaków ATARI (lub dowolny inny). W przeciwieństwie do oryginalnego OS-u, QMEG OS nie może wystartować SELF TEST-u przez szynę systemową, ponieważ nie ma go już w tym miejscu pamięci. Usunięty jest także międzynarodowy zestaw znaków. Aby zachować czytelność wszystkich tekstów, (które mogłyby odwoływać się do tego drugiego zestawu znaków) QMEG ignoruje wszystkie próby wykonania rozkazu POKE 756,224. QMEG OS jest kompatybilny z OS-em 800XL. Oczywiście zawsze mogą wystąpić problemy z programami, które dla własnych potrzeb używają komórek za strony 2 i 3 (na tych stronach QMEG OS ma własne komórki systemowe). Ale i programy, które normalnie uruchomić można na ATARI 400/800, dają się uruchomić pod QMEG OS-em.
MONITOR OS zainstalowany jest w miejscu dotychczas zajmowanym przez SELF TEST, tutaj znajdują się wszystkie funkcje QMEG OS-u. 2.1 Wywołania MONITORA OS Do MONITORA OS przejść można: a) z BASIC-a komenda "BYE"; b) z DOS-a przez
"RUN E471"; c) z MONITORA MLM poprzez "Q"; d) po naciśnięciu
klawiszy SELECT, RESET.
QMEG OS potrafi sterować dodatkowym rozszerzeniem pamięci dla 800XL (130XE). Dodatkowa pamięć RAM 192 kB może być traktowana jako dwa RAM dyski A i B. Istnieją następujące możliwości konfiguracji tych dysków:
RAM dysk A RAM dysk B ----------------------------------------------- a) SS pojedyncza gęst. pojedyncza gęst. 90 kB 90 kB b) gęstość 1050 XE gęstość 1050 128 kB 64 kB c) D- podwójna gęstość dysk nie występuje 180 kB Przez naciśniecie klawisza S, M lub D następuje wybranie rodzaju dysków. Litera ta odpowiada wybraniu dysku A, dysk B definiowany jest już automatycznie. Rodzaj wybranych dysków wskazywany jest w prawej części ekranu pod literami AB. RAM dysk oznaczony litera X jest kompatybilny z RAM dyskiem D8: w systemie DOS II+/D wersji 6.2. Aby używać te RAM dyski należy przypisać im jakiś adres, od 1 do 4 lub 8. Dokonuje się tego poprzez użycie klawiszy A i B. 2.3 Przypisywanie adresów dyskowych Aby przypisać RAM dyskom adresy fizycznego urządzenia należy przy pomocy klawisza SPACE ustawić kursor na wybranym numerze napędu (1 do 4 lub 8) i nacisnąć literę A lub B. W tym momencie napędowi #n przypisany zostanie wybrany RAM dysk. Wszystkie odwołania do napędów realizowane z poziomu BASICA-a lub DOS- u kierowane będą do przypisanego RAM dysku. Jeżeli adres został wybrany omyłkowo, to po naprowadzeniu kursora należy nacisnąć klawisz "-". Pod adresem dyskowym pojawią się oznaczenia przypisanego mu RAM dysku. 2.4 Czytanie i zapis RAM dysku A (kopiowanie dyskietek) Aby wczytać całą dyskietkę do RAM dysku A należy: Aby przepisać zawartość całego RAM dysku A na dyskietkę, należy wsunąć do
napędu dyskietkę docelowa, kursor naprowadzić na zadany nr dysku i wcisnąć klawisz
"W" (Write). Naciśniecie START spowoduje, że dyskietka zostanie najpierw
sformatowana, a następnie zawartość RAM dysku A zostanie przepisana. Jeżeli dyskietka
docelowa nie ma być formatowana, to zamiast START należy nacisnąć SELECT. 2.5 Skorowidz dyskietki w systemie DOS 2.* Po naciśnięciu klawisza "L", na ekranie wyświetlonych zostanie pierwszych osiem nazw zbiorów z dyskietki (lub RAM dysku). Kolejne naciśniecie "L" wyświetla następna ósemkę nazw. Klawisz SPACE powoduje powrót do MONITORA OS. Uwaga! Jeśli RAM dysk jest zablokowany, należy nacisnąć SHIFT-L, wówczas jednak pamięć od adresu $7F00 do $7FFF zostanie ponownie zapisana !!! 2.6 Ładowanie programów maszynowych formatów COM i BIN Podobnie jak w pkt. 2.5 należy przeczytać zawartość skorowidza dyskietki lub RAM dysku za pomocą "L", a następnie należy nacisnąć cyfrę odpowiadającą wybranemu programowi. Zawartość pamięci roboczej zostanie wymazana, a wskazany program zostanie załadowany (pojawi się komunikat: Loading xxxxxxxx.yyy) i wystartowany. Kod maszynowy programu musi być "startowalny" także bez DOS-u. 2.7 Zarządzanie BASIC-em i CARTRIDGE-m Zarządzanie wykorzystywaniem (wybór) niektórych bloków pamięci odbywa się przez użycie odpowiedniej kombinacji klawiszy. To jakie bloki są aktualnie używane wskazywane jest pod symbolem Prg w lewej części wyświetlanej tabliczki monitora Kombinacja Znaczenie skrót a) START-Z Włączenie BASIC-a ROM BAS b) START-C Włączenie Cartridge-a CAR c) START-X Włączenie RAM pod adr. C000 RAM BASIC oraz CARTRIDGE startują ze startu zimnego, co można osiągnąć kombinacja RESET-START. 2.8 Startowanie DOS-u z RAM dysku C. Specjalnie dla DOS-u wydzielony jest RAM dysk C. Ma on wielkość 5.25 kB. Aby zapisać
DOS do tego RAM dysku, należy wczytać DOS a następnie (z BASIC-a) wydać instrukcje
POKE 1792,196. Tak poprawiony DOS należy zeskładować na nowej dyskietce. 2.9 Tryby ULTRA SPEEDY, TURBO i HAPPY Aby floppy dysk #n pracował w trybie ULTRA należy ustawić kursor na wymaganym
numerze floppy dysku i nacisnąć klawisz "U". Jeżeli wszystko jest w
porządku, pod wybranym numerem pojawi się litera "U", w przeciwnym razie
pojawi się znak "-" i stacja nie przejdzie do tego trybu. 2.10 Dodatkowe funkcje HAPPY Dla trybu HAPPY występują dodatkowe funkcje MONITORA OS: 2.11 Kontrolowany zimny start Kontrolowany zimny start następuje automatycznie (rodzaj funkcji "U") albo po naciśnięciu "N". W niektórych, chronionych programach należy użyć kombinacji SHIFT-INVERSE, przez co nastąpi zimny start systemu. Oczywiście jeśli niezbędny jest BASIC należy mieć wciśnięty OPTION. 2.12 Wł/Wył RAM dysków i przełączanie banków. Wciśnięcie "P" powoduje zablokowanie RAM dysku. Tło ekranu zmieni się na różowe i jednocześnie adres 54017 (PORTB) jest zabezpieczony przed zapisem. Może to być bardzo pomocne przy ładowaniu programów dla komputerów serii 400/800. Przy zablokowanej komórce PORTB nie działa monitor MLM ponieważ umieszczony jest w obszarze, w jakim 800XL ma SELT TEST. Ponowne naciśniecie "P" odblokowuje system. 2.13 Funkcja $ Dla właścicieli monitorów i telewizorów monochromatycznych, pod znakiem $ w
tabliczce MONITORA OS wskazywany jest jego aktualny stan. 2.14 Opuszczenie MONITORA OS. MONITOR OS opuścić można następująco: a) ESC powrót do DOS-u; b) CNTL-CAPS nowy start DOS-u z RAM dysku C; c) RESET powrót do DOS-u bez BASIC-a i CARTRIDGE d) SHIFT-INVERSE kontrolowany zimny start; e) RETURN skok do MONITORA MLM 2.1 3. MONITOR MLM 2.1 Monitor MLM 2.1 jest prostym narzędziem do analizy i dokonywania zmian w pamięci. 3.1 Skok do MLM 2.1 Z MONITORA OS do MLM przechodzi się po naciśnięciu RETURN. Z DOS-u po "RUN E480". Prawie wszystkie rozkazy MLM zaczynają się adresem, który znajduje się w liczniku programowym AD i jest umieszczany na stałe. Przy tych rozkazach można także adres ten opuścić, dopóki w MLM znajduje się wartość AD. Komórki pamięci PBCTL ($D303) nie można zmieniać. Podobnie nie można używać przerwań w obszarze pamięci od $5000 do $5800. 3.2 Znak początkowy w MLM a) $ MLM oczekuje, ze wszystkie adresy będą podawane w postaci hex. Adresy dziesiętne musza być podane z poprzedzającym je znakiem #. b) # MLM oczekuje, ze wszystkie adresy będą podawane dziesiętnie. Adresy hex musza być poprzedzone znakiem $. c) ? Zadanie jest niewykonalne. d) >xxx wykryto błąd I/O (nr dziesiętnie). 3.3 Rozkazy MLM N nowy start MLM (lub "$E480GO"); 3.4 Prosta arytmetyka w MLM. a) adr= przeliczanie adresu na wartość hex lub dziesiętną; 3.5 Wyświetlanie zawartości pamięci. a) adr; wyświetlonych zostanie pierwszych 8 bajtów od adresu adr. Adres podany jest hex lub decymalnie. b) adr jak w pkt a) lecz w trybie hex bajty te pokazane są w kodzie ATASCI. c) adr" pierwsze 8 bajtów od adresu adr pokazanych będzie jako kody ATASCI. d) adr' pierwsze 8 bajtów od adresu adr pokazanych będzie jako kody obrazu. e) adrL zawartość pamięci od adresu adr zostanie zdisasseblowana na 20 wierszy. We wszystkich rozkazach można zamiast "adr" napisać "adr.adr" co oznaczać będzie obszar miedzy adresami. Jeżeli rozkaz zostanie uzupełniony na końcu znakiem "*" to ostatni rozkaz będzie powtarzany. Przerwanie tego możliwe jest poprzez klawisz BREAK. 3.6 Zmiana zawartości komórek pamięci. a) adr;bajt bajt bajt ... Poczynając od adresu adr, pamięć zapełniona zostanie
kolejnymi bajtami zapisanymi za adresem. Można zamiast bajtów podąć wartości
liczbowe, które zapisywane są do pamięci w kolejności LO bajt i HI bajt. 3.7 Przenoszenie, porównywanie i wypełnianie pamięci. a) adr1.adr2 M adr3 Zawartość pamięci od adresu adr1 do adr2 zostanie przeniesiona na obszar zaczynający się od adr3. b) adr1.adr2 V adr3 Zawartość pamięci od adresu adr1 do adr2 zostanie porównana z zawartością pamięci adr3. Przy różnicy zostaną pokazane adresy i porównywane bajty. c) adr1;bajt adr1.adr2 M adr1+1 Zawartość pamięci od adr1 do adr2 zostanie wypełniona zawartością adresu adr1. 3.8 Przeszukiwanie pamięci roboczej a)adr1.adr2;bajt bajt Pamięć robocza jest przeszukiwana od adresu adr1 do adr2 w poszukiwaniu podanych bajtów albo słów "bajt bajt ..." Adresy znalezionych bajtów zostaną wyświetlone. b)adr1.adr2"ATASCII Pamięć robocza jest jak w pkt a) przeszukiwana w celu znalezienia łańcucha znaków ATASCII podanych w rozkazie. c)adr1.adr2'kody obr. Jak w pkt a) z tym, ze poszukiwany jest łańcuch kodów obrazu. 3.9 Czytanie/zapis sektorów z/na dysk. a) adrsecnr.count Zawartość pamięci od adresu adr zapisz na dysk od sektora secn do sektora secnr+count-1. Wartość count musi być mniejsza od 255 (wartość 0 oznacza 256). Rozkazy obsługują także podwójna gęstość dysków. 3.10 Modyfikowanie rejestrów i start programów a) R Pokazana zostanie zawartość rejestrów symulowanego procesora. b) W=bajt Umieszczenie wartości "bajt" w akumulatorze. c) X=bajt Umieszczenie wartości "bajt" w rejestrze X. d) Y=bajt Umieszczenie wartości "bajt" w rejestrze Y. e) P=bajt Umieszczenie wartości "bajt" w rejestrze F procesora. f) adrGO MLM załaduje rejestry A, X, Y i F wartościami symulowanego procesora 6502 i skoczy poprzez JSR pod adres adr. Jeżeli napotkany zostanie rozkaz BRK, nastąpi przerwanie programu, i zostanie wywołany MLM z rozkazem R. 3.11 Wykorzystanie RAM przez MLM. a) zerowa strona korzysta z adresów 4-7, 21, 22, 112-120. Adresów tych nie można zmieniać w trybie MLM. 4. Klawisze funkcyjne CTRL-HELP zablokowanie/odblokowanie klawiatury; CTRL-4 wł/wył dźwięku z klawiatury; CTRL-5 wł/wył migającego kursora; CTRL-6 wyłączenie obrazu (ANTIC-a) co podwyższa szybkość pracy procesora o ok. 30%. Obraz powraca po naciśnięciu dowolnego klawisza. CTRL-7 ustawienie prędkości powtarzanie znaków przy wciśniętym klawiszu. Można ustawić szybkość małą, średnią i dużą. CTRL-8 działa jak BREAK, ale wykorzystywane jest tylko przy edytowaniu z klawiatury. CTRL-9 jeśli kursor nie jest w lewym rogu to skoczy tam. CTRL-0 przenosi kursor na koniec ekranu. 5. Sterowanie drukarka. Za pomocą drukarki EPSON można łatwo wydrukować dowolne teksty, przy czym uzyskać można listingi wysokiej jakości. Do wydrukowania można używać skrótu "P:" zamiast "P2:". Aby zapewnić format drukowanego tekstu można wykorzystać następujące adresy: adres wartość znaczenie 29 RAMTOP-B Adres początku bufora graficznego (tylko bajt HI adresu) 30 60 max. liczba znaków w wierszu 31 60 liczba wierszy na stronę 757 224 adres początku generatora znaków (tylko bajt HI adresu) 758 'K rozkaz dla drukarki EPSON 'L lub 'K (pojedyncza/podwójna gęstość). Wartości te są ustawianie po każdorazowym RESET na nowo. Uwaga! Podczas drukowanie przy pomocy "P2:" drukarka musi mieć do dyspozycji 512 bajtowy bufor. HI bajt adresu tego bufora musi zostać umieszczony w komórce 29. Po wydrukowaniu liczby wierszy podanych w komórce 31, nastąpi automatyczny wysuw papieru do nowej strony. Wartość 0 w tej komórce oznacza wyłączenie automatycznego wysuwu strony. 5.2 Druk z podwójna gęstością - 120 znaków w wierszu Aby osiągnąć ten efekt należy pod adresem 756 umieścić wartość 'L (dziesiętnie
76) i odpowiednio zmienić zawartość komórki 30. Efekt ten osiągnąć można także
poprzez specjalne użycie adresu drukarki, mianowicie "P3:gn", w którym: 5.3 Centronics System QMEG ma możliwość współpracy z interfacem Centronics. Interface musi być obsługiwany przez dodatkowy układ PIA 6520 zajmujący adresy $D600-$D6FF. Porty PIA należy podłączyć w następujący sposób: PIA Centronics Funkcja PA0-PA7 pin 2-9 DATA 0-7 PB0 pin 1 STROBE PB7 -- 0-centronics włączony 1-centronics wyłączony PB6 pin 11 BUSY PB5 -- 1-konwersja końca znaku wiersza (155 na 13, 10) 0-bez konwersji 6. SIO i DISKINTERFACE a) 34 " formatowanie w średniej gęstości; b) 35 # automatyczne formatowanie w podwójnej gęstości formatu PERCOM; c) 63 ? włączenie szybkiego zapisu i ULTRA SPEED; d) 81 Q zatrzymanie silnika; e) 72 H w zależności od DAUX1 i DAUX2 (778 i 779) włącza dodatkowe funkcje HAPPY; f) 83 S rozkaz STATUSU włącza R/W (czytanie i zapis) i rozkaz P - automatycznie na poprawna długość sektorów (adres DSKLN 725). 6.2 SIO i USIO QMEG OS wykorzystuje dwa podprogramy SIO. Jednym jest podprogram USIO, który pracując
bez przerwań I/O realizowany jest szybciej niż normalne SIO. USIO jest wywoływany przy
wszystkich szybkich operacjach dyskowych (Speedy, Happy). Dopóki nie jest wywołany RAM
dysk dostępny jest normalny podprogram SIO 800XL. SIO wytwarza cztery przerwania: 6.3 RAM dyski A i B Oba RAM dyski można używać poprzez SIO lub DSKINV tak jak inne floppy dyski. RAM
dyski rozpoznają także sygnały typu PERCOM PUT i rozkazy statusowe. Po sformatowaniu
oba RAM dyski maja taki sam format. Błędy RAM dysków maja numery: Jeżeli QMEG OS zainstalowany jest w komputerze z rozszerzeniem pamięci typu 1 (zobacz
rozdz. 8) przy używaniu RAM dysków w obszarze $4000-$7FFF nie może być umieszczony
żaden Display List ani obszar obrazu, gdyż mogłoby w tej sytuacji dojść do załamania
systemu. 6.4 Tablica Konfiguracji Napędów Tablica ta jest na stale ustawiona wg kolejności napędów i zajmuje adresy od 1008 do 1015 (dla napędów od 1 do 8). Napęd #0 jest zawsze identyczny z RAM dyskiem A a napęd #5 z dyskiem #8. Wartość Tryb pracy Skrót w MONITORZE OS 0 lub >4 tryb normalny "-" 1 tryb ULTRA SPEED "U" 2 RAM dysk A "A" 3 RAM dysk B "B" 4 tryb HAPPY "H" 7. Organizacja pamięci. Poniżej podano miejsca pamięci, które maja inne znaczenie niż w 800XL. 7.1 Strona zerowa adres opis 0,1 Oba bajty są wolne i nie są wymazywane nawet przy starcie zimnym. 4-7 MLM 18-20 Czas (niekasowalny przez RESET). 21,22 MLM, OEMON-File loader, DISKIF 28-31 "P2:" 54,55 Wskaźnik bufora grafiki dla "P2:" 74,75 Do dowolnego wykorzystania. 96,97 IX, IY dla procedury DRAWTO. 112-120 MLM i zmienne dla DRAWTO. 7.2 OS RAM (strony 2 i 3) 563 Do dowolnego wykorzystania. 568,569 VCTRLB wektor dla CTRL-8 581 FMTFL format PERCOM RAM dysku (128-single, 0-medium, 1-double). 583-619 OSMON-Display List, MLM-bufor wiersza, "P2:"-bufor zmiany bitu znaku. 648 FNKEYS 128-klawisze funkcyjne włączone, 0-wylaczone. 654,655 STTEMP Szybkość dla DSKIF. 700,745 Przeznaczone do późniejszego użycia. 713-724 Zmienne dla MLM i bufor PERCOM dla DSKIF. 727 FLASH 128= kursor migający, 0= wyłączony. 728 FLASH 205= kursor migający aktywny. 735 FLINE Licznik wierszy dla automatycznego wysuwu stron przy "P2:" 757 PFONT HI bajt adresu generatora znaków dla "P2:". 758 P2CMD Rozkaz dla drukowania poprzez "P2:", K- normalnie, L-podwójna gęstość. 759 PMODE 1= druk przez "P2:", 0= druk przez "P:". 760,761 PCOL, PTEMP kolejne zmienne "P2:". 787 DLIEN 128= DLI włączony wg RAM dysku. 832-959 IOCB Używany jest także dla ekranu MONITORA OS. 1003 RSTAPH Przy RESET APPHMI ustawiane jest na 0 (oznacza to, ze edytor może być stale otwarty). 1004,1005 DBAUD Procedury transmisji dla ULTRA SPEED. 1006 PBLOCK 128= po RESET ram dysk jest zablokowany. 1007 TYPEA Format RAM dysku A. 1008-1015 ASSIGN Tablica Konfiguracji Dysków. 1017 ROMSCM Wartość CHECKSUM dla całego QMEG OS. 1018-1020 Do dowolnego wykorzystania. 8. Hardware. QMEG OS V3 współpracuje z następującym hardware-m. 8.1 Rozszerzenia pamięci RAM dyski mogą mieć 128 albo 320 kB. Zarządzanie dodatkowa pamięcią realizowane jest jak w przypadku modelu 130XE, poprzez 16kB baki pamięci w obszarze $4000-$7FFF, sterowane pojedynczymi bitami PORTB ($D301). QMEG OS wykorzystuje dwa typy obsługi portu B: PORTB B 1) 7 0=SELF TEST włączony, 1=wylaczony (jak w 800XL). 4 0=dostep do ANTICA i CPU poprzez bity 2,3,5 i 6 wg przedzielonego banku pamięci, 1=dostep normalny. 2) (Rozszerzenie COMPY SHOP 320 kB). 7 0=SELT TEST włączony jeśli bity 4 i 5 =1, w przeciwnym razie wyłączony. 5 0=wylacznie dostęp ANTIC. 4 0=wylacznie dostęp CPU poprzez bity 2,3,6 i 7 do banków pamięci, 1=normalny dostęp do pamięci. Przy obu typach rozszerzenia wykorzystuje się banki pamięci od 1 do 15 (nr wyznaczony jest przez cztery wymienione bity). Rozróżnienie typu następuje automatycznie. 8.2 Rozszerzenia dla stacji 1050 QMEG OS rozpoznaje wszystkie rozszerzenia stacji 1050 kompatybilne ze standardem PERCOM przy podwójnej gęstości zapisu tj. 180kB (takich jak RANA, HAPPY, SPEEDY, TURBO). Właściciele rozszerzeń HAPPY i SPEDDy maja zachowana pełną szybkość transmisji. Należy jednak zapamiętać, ze napędy #1 i #2 mogą być dowolne (jeden HAPPY i jeden SPEEDY). Napędy #3 i #4 musza być jednak tego samego typu jak napęd #1.
Gumi/Tight
Qmeg powinien być umieszczony w epromie 27C128 lub pochondnym. Mówiąc krótko,
trzeba wgrać do epromu używając programatora epromów jeden z poniżej znajdujących
się rom'ów.
Jak widać dużej filozofii tutaj nie trzeba i każy może sobie wmontować Qmeg'a. Tak
samo można postąpić z każdym innym Os'em, który chcemy wmontować. Problem może tu
stanowić zaprogamowanie kości, ale jak dobrze poszukacie wśród znajomych na pewno
ktoś ma programator epromów i może wam taką kość zaprogramować. Jeżeli na prawdę
już takiej osoby nie znajdziecie, możecie tą kość wysłąć mi, a ja postaram się
wrzucić na nią Qmeg'a. |