Co wybrać:
Monitor czy Assembler?
Czy takie porównanie jest w ogóle możliwe? Poniższy artykuł będzie próbą oceny obu platform. Zadanie, jakie postawił przede mną Webmaster (czytaj: Luc), jest nie lada wyzwaniem. Bo jako osoba z największym doświadczeniem w obcowaniu z C64 (jak to zgrabnie ujął), powinienem poradzić sobie z tym zadaniem śpiewająco...
Monitor - nie chodzi mi tu bynajmniej o ten stojący przed Wami na biurku :) Jest programem maksymalnie okrojonym z wszelkich zbędnych wodotrysków (przynajmniej w ogólnym założeniu jego twórców). Zadanie, jakie przed nim stoi to przejęcie kontroli nad programami aktualnie rezydującymi w pamięci komputera.
Asembler - język i program zarazem, jest tym, co tygrysy lubią najbardziej :) Jako środowisko pracy dla kodera nie ma sobie równych. Cechą charakterystyczną jest odsunięcie Nas od zawiłości systemu operacyjnego i pewna beztroska w podejściu do tego tematu - nieraz przyjdzie nam przekonywać krnąbrny program, iż to my mamy rację...
Rozwijając, zatem myśl zawartą w tytule, trzeba obiektywnie stwierdzić o bezsensowności tego typu dywagacji. Można, bowiem zużyć wiele klawiatur na wychwalanie wyższości jednego nad drugim i nie osiągnąć literalnie nic. Każde, bowiem środowisko pracy, rządzi się swoimi prawami i ma jakieś wady oraz niezaprzeczalne zalety. Zamiast więc dyktować Wam, co warto wybrać? Postaram się pokazać, do czego daną platformę można wykorzystać i jakie programy mogą nam w tym wydatnie pomóc.
Monitor - czy aby na pewno ubogi krewny?
Wróćmy, zatem do pierwszego "podejrzanego" o ułatwianie kontaktu z C64. Mowa tu oczywiście o tzw. Monitorze Języka Maszynowego, zwanego potocznie Debugerem. Te drugie określenie oddaje chyba najlepiej przeznaczenie tych programów. Jak dyktuje mi moje niemal 15-letnie doświadczenie i stos literatury pod biurkiem - początkujący popełniają wiele nieraz bardzo wyrafinowanych błędów w swoich programach. A często ostatnim ratunkiem dla nich przed popełnieniem kolejnych jest właśnie debuger. To cudowne narzędzie pozwala na ustawienie tak zwanych "break-pointów", czyli pułapek w kodzie programu. Teraz wystarczy już tylko odpalić kulejący program i przetestować poszczególne fragmenty jego kodu na obecność pluskiew. Tak w skrócie można opisać podstawowe zastosowanie monitorów. Oprócz tych czysto "morderczych" właściwości dysponują nieraz przeróżnymi ciekawymi funkcjami. Na ten przykład Master-Mon (50 KB) pozwala dodatkowo odsłuchiwać sample a Demo-Mon zdisasemblować pamięć stacji dysków do pliku!
Niestety forma tego artykułu nie przewiduje opisu samych programów, lecz czy nie będzie to fascynującym zadaniem na jakiś pochmurny i deszczowy dzień? Nic, bowiem nie daje większej satysfakcji niż samodzielnie rozpracowany program.
Dodatkowo monitory pozwalają na różnorakie przedstawienie danych z pamięci na ekranie monitora. Warto tu wspomnieć o swojskim disasemblingu, tu prym wiedzie wspomniany przeze mnie wcześniej Master-Mon, który poza standardowymi mnemonikami disasembluje także tzw. Niepublikowane! - niestety w tym temacie nie ma opisanego standardu, więc, czasem postać rozkazu ciut się różni od tej z Turbo Illegal Assemblera...
Czy interpretacji jako ciągi znaków ASCII w monitorze modułu Action Replay przez dyrektywy "I" oraz " I*". Nie można też zapomnieć o wspaniałym monitorze stacji dysków zawartym w tym module. Wychwalając konkurencyjne monitory wspomniałem o tzw. Break-pointach, otóż prawie nikt tego nie wie! Ale Action posiada również takie CUDO - o jego wykorzystaniu poczytacie wkrótce w CRACK PL. Będzie to temat wiodący w jednym z odcinków tej ciekawej sagi o crackowaniu.
Niekiedy program monitora jest prawdziwym kombajnem. Oddaje w ręce programisty niemal wszystkie zasoby komputera i jego peryferii - mowa tu oczywiście o programie Demo-Mon.
Na koniec pozostaje wspomnieć o możliwości disasemblowania danych z pamięci jako matryc fontów i spritów. Takie możliwości posiada m.in. moduł Final 3 (co możecie ujrzeć na zdjęciu obok). Do czego to może być przydatne? To już oceńcie sami :)
Na tym zakończyłbym omawianie (bardzo pobieżne zresztą) możliwości i zastosowań programów zwanych Monitorami. Nie sposób przecież w kilku zdaniach opisać ich nieraz fenomenalnych udogodnień dla programisty. Jeżeli wyrazicie zainteresowanie w kontynuacji tego tematu, to postaram się nieco przybliżyć ciekawsze programy - swoje propozycje i sugestie wysyłajcie na adres maniac64@nostalgia.pl.
Assembler - kombajn nie dla wszystkich?
O ile w przypadku monitorów mieliśmy duży wybór, to tu ograniczeni jesteśmy do kilku pozycji - bardziej lub mniej przyjaznych użytkownikowi. Sztandarowym produktem jest oczywiście Turbo Assembler oraz jego rozbudowana wersja Macro Assembler (patrz zdjęcie) i klon Turbo Ass'a o nazwie Turbo Illegal Assembler umożliwiający pisanie programów z wykorzystaniem mnemoników rozkazów niepublikowanych :-)
Jeszcze mała dygresja odnośnie mnemoników assemblera. Istnieje obok monitorów i assemblerów, spora grupa programów, których jedynym zadaniem jest konwerterowanie, danych z pamięci komputera na zbiory SEQ - które potem możemy wczytać do Turbo Assemblera i poddać dalszej edycji. Przetestujcie sami ReAssembler Pack.
Jest to jakby ogniwo pośredniczące pomiędzy tymi dwoma platformami. Wspominam o tym celowo, gdyż nie wszyscy wiedzą o ich istnieniu, a ich użycie zaoszczędzi nam niekiedy masę nerwów. W przypadku ręcznego przeklepywania treści programu do edytora - co jest wysoce irytującym sposobem spędzania wolnego czasu.
Do czego zatem służą programy zwane Assemblerami? Po tak postawionym pytaniu, nie jeden z Was mógłby się zapewne nabawić przepukliny, od studiowania instrukcji ich obsługi. Nie pozostaje mi, więc nic innego jak... Napisanie w tym temacie kilku zdań.
Język Asemblera powstał na zapotrzebowanie szerokiego grona użytkowników pierwszych komputerów. Był alternatywą dla szeregu nic nie znaczących, dla laika znaków podczas układania programu... Któż, bowiem będąc przy zdrowych zmysłach :) będzie się posługiwał hexem, pisząc np. A9 02 8D 21 D0 aby zmienić kolor ramki na czerwony? Czyż nie prościej jest wstukać LDA #$02, STA $D021... do tego właśnie służą programy zwane Assemblerami.
Choć nie sposób odciąć się tu całkowicie od monitorów, wszak one też potrafią zinterpretować zapis w asemblerze. Tym nie mniej ich zastosowanie ogranicza się tylko do drobnych poprawek, podczas gdy w Assemblerze budujemy cały program. Możemy w trakcie tego procesu korzystać z wszelkich udogodnień, jakie niesie za sobą użycie pełnoekranowego edytora. A wykorzystanie zmiennych czy etykiet - w przypadku monitorów możemy o tym udogodnieniu zapomnieć. Moja konkluzja będzie zatem następująca, swoje programy piszcie w Assemblerach a debugujcie pod monitorami.
Tomasz 'TSD' Dzierkowski
maniac64@nostalgia.pl
|