QA Swap, czy potrzebny?


      Jakiś czas temu na scenie ukazał się programik QA SWAP v1.1 autorstwa Mayonez'a/COBRA oraz Rav'a/Ind. Dla wielu koderów (szczególnie tych młodszych) jest to bardzo pomocne narzędzie podczas pisania programu w Quick Assemblerze, gdyż po odpowiednim zainstalowaniu udostępnia znacznie więcej pamięci niż sam QA. Do dyspozycji mamy pamięć od MemLo do $b3ff, poza tym po przetestowaniu programu następuje powrót do QA, w którym znajduje się już źródłówka, a wszystkie ustawione opcje nie uległy zmianie!

      Z pewnością jest to wielkie udogodnienie, niestety nie każdy może sobie na nie pozwolić. Aby QA SWAP mógł pracować potrzebny jest Ramdisk lub Ram-Cart! Co prawda autor przewidział także fakt iż nie każdy może posiadać ów urządzenia i umożliwił współpracę ze stacją dysków, ale jak sam dodaje więcej z tego kłopotu niż pożytku, więc...

      Jak wspomniałem wcześniej górną granicą dostępnej pamięci po zainstalowaniu QA SWAP jest adres $b3ff. Niby jest to dużo, ale co zrobić gdy zabraknie nam np. jednej strony pamięci? Ktoś powie że można odinstalować XLF'a. Hm... pewnie będzie miał rację, ale co zrobić gdy zabraknie dwóch lub czterech stron? No właśnie, to jest już problem!

      Bardzo dawno temu opracowałem sobie w prosty sposób moje "środowisko" pracy, które udostępnia mi wolną pamięć od MemLo do $bfff z jednoczesnym zachowaniem QA, źródłówki oraz wszystkich ustawionych w QA parametrów (nawet kursor stoi w tym samym miejscu he, he). Jako że nikt nigdzie nie opisał tego sposobu postanowiłem wam go przedstawić. Niestety "mój" sposób także wymaga "szybkich" urządzeń tz. Ramdysku lub Ram-Cart'u.

Przed przystąpieniem do pracy należy zaopatrzyć się w:

  • DOS II+/D (v6.1 lub v6.4).
  • Quick Assembler (to oczywiste).
  • Odpowiedni plik wsadowy.
Myślę że dwa pierwsze punkty są jasne, a więc przejdę do ostatniego.

      Jak wiadomo DOS II+/D umożliwia w bardzo prosty sposób uruchamianie plików wsadowych. Wystarczy bowiem wpisać @PLIK.BAT i już plik ten jest odczytywany. Jak widać przed nazwą pliku umieszczona jest "małpka", która informuje DOS o tym iż jest to plik wsadowy. Przy wpisywaniu nazwy można pominąć rozszerzenie (plik jednak musi je posiadać i musi to być *.BAT). Tak więc uruchomienie pliku można ograniczyć do wpisania @PLIK.

W pliku wsadowym mogą się znajdować wszystkie polecenia DOS'u, co daje nam bardzo duże możliwości. Dodatkowo dostępne są dwa polecenia specjalne:

'TEXT - wprowadza na ekran tekst stojący po znaku '
! - czeka na naciśnięcie dowolnego klawisza

Sam plik wsadowy to nic innego jak zwykły plik ATASCII, a więc można go stworzyć przy pomocy zwykłego edytora tekstu lub samym Quick Assembler'em! Ważne jest jednak to aby tekst pisany był dużymi literami, wszystkie wartości powinny być podawane w HEX'ach bez "dolara", a ostatnim znakiem w linii musi być EOL czyli kod klawisza RETURN (wartość $9b). Skoro już wiemy co i jak pora więc napisać przykładowy plik wsadowy.

Początek pliku powinien zawsze zaczynać się od takiej linii:

SAV D8:QA.COM 2000 BC1F

Jest to najważniejsza linia całego pliku gdyż za jej pomocą zapisujemy na Ramdysku zawartość pamięć od $2000 do $bc1f. Jak napewno się domyślasz w tym obszarze znajduje się QA oraz nasza źródłówka! Wartość $2000 nie jest jednak stała bo gdy wczytamy np. XLF'a wartość tą powinniśmy podnieść o jedną stronę czyli byłoby to $2100. Jeżeli używasz innych nakładek to wartość ta będzie jeszcze inna. Najlepiej po zainstalowaniu wszystkich potrzebnych Ci nakładek i uruchomieniu QA wrócić do DOS'u i wpisać polecenie:

>02E7

po tej czynności ukaże się nam:

>02E7 LO HI ?? ?? ?? ?? ?? ??

?? - to nie istotne dla nas wartości (obecnie)
LO - młodszy bajt MemLo
HI - starszy bajt MemLo

teraz wystarczy odczytać wartości (od tyłu czyli najpierw HI a potem LO) i już wiemy odkąd zaczyna się QA!

Dalsza część pliku może być zupełnie dowolna np.

>022F 00
LOA D8:RYSYNEK.PIC 20B0
LOA D8:DANE001.DAT
LOA D8:MUZYKA.MPT
LOA D8:PLAYER.MPT
LOA D8:FONTY.FNT B400
LOA D8:PROGRAM.COM
>022F 22
'Wszystko w pamieci... dowolny klawisz
!
RUN 8000

Aby wszystko było jasne opiszę każdą linię.

  1. Wyłączy nam obraz podczas odczytu plików.
  2. Załaduje zwykły rysunek pod adres $20b0. Mogą to być także inne dane, które nie posiadają nagłówka DOS'u.
  3. Załaduje dane, które posiadają nagłówek DOS'u pod adres zawarty w nim. Jeżeli plik będzie posiadał adres INIT to zostanie on wykonany, natomiast adres RUN zostanie pominięty czyli plik nie zostanie uruchomiony.
  4. Patrz punkt 3.
  5. Patrz punkt 3.
  6. Patrz punkt 2 z tym że dane załadują się pod adres $b400.
  7. Patrz punkt 3.
  8. Włączenie obrazu.
  9. Wyświetli nam tekst stojący po znaku '.
  10. Oczekiwanie na klawisz.
  11. Uruchomienie całości od adresu $8000.
Myślę że teraz wszystko już jest jasne i każdy będzie potrafił sam stworzyć odpowiedni plik wsadowy.

      Wyjście z testowanego programu powinno być zakończone rozkazem JMP ($0a) co umożliwi powrót do DOS'u (ekran zostanie przywrócony automatycznie). Teraz wystarczy wpisać QA i już możemy poprawiać błędy. Bystry czytelnik zauważy iż plik (QA) posiada także rozszerzenie, a poza tym nie posiada on adresu uruchomienia (przy zapisie nie podaliśmy go). Należy się więc pewne wyjaśnienie.

Nie musimy podawać rozszerzenia jeżeli jest to COM, DOS doda je automatycznie. Adres uruchomienia nie jest konieczny jeżeli start programu następuje od pierwszego bloku. Plik QA.COM jest jednoblokowy i startuje właśnie od pierwszego swojego bajtu.

Na koniec ogólne zasady postępowania:

  1. Wczytujemy DOS II+/D.
  2. Kopiujemy wszystkie potrzebne nam dane na Ramdysk.
  3. Wczytujemy wszystkie potrzebne nam nakładki.
  4. Wczytujemy Quick Assembler'a.
  5. Sprawdzamy MemLo.
  6. Tworzymy odpowiedni plik wsadowy i nagrywamy go na Ramdysku.
  7. Piszemy lub odczytujemy plik *.ASM w QA.
  8. Asemblujemy go na Ramdysk.
  9. Wychodzimy z QA do DOS'u przestawiamy stację na D8: (komenda: 8;) i uruchamiamy plik wsadowy.
  10. Testujemy... i wracamy do DOS'u.
  11. Wpisujemy QA i ponownie jesteśmy w edytorze.
      Jak widać możemy wcale nie używać wspomnianego wcześniej programu QA SWAP v1.1, wszystkie oferowane przez niego "ułatwienia" dostępne są przy pomocy zwykłego pliku wsadowego, a poza tym mamy wolną pamięć zajmowaną przez ów program! Oczywiście "mniej pojętnym" koderom polecam QA SWAP, gdyż napewno jest on dużo łatwiejszy w obsłudze i tutaj należą się duże brawa dla autorów!!!

Jager/Dial