Opisi:
Svet Kompjutera, #7/8, Julij/Avgust 1987, Dragan Knežević & Predrag Bećirić
SPECTRUM : POKE za pet minuta
Kao što svaki haker zna, pronalaženje POKE-ova u većini slučajeva mukotrpan je
i težak posao, prvenstveno zbog velike dužine igara. Svaka ozbiljnija i bolja
igra zauzima u proseku 40K memorije, a najkraći disasembler, koj je neophodan
zauzima 6K, tako da on mora prekrivati izvestan deo igre. Problem se odmah
javlja: gde smestiti disasembler? Šta ako se baš tom delu nalazi POKE ?
Pišu Dragan Knežević, Predrag Bećirić
Veliki broj učitavanja i puno utrošenog vremena su odlike ovakvog načina
traženja POKE-ova. Program koji sledi oslobodiće vas ovih muka. a takođe vam i
štedi vreme. POKEMAKER je program specijalno pisan za traženje POKE-ova i sa
svojih dvadesetak naredbi znatno će vam olakšati posao.
POKEMAKER predstavlja jednu vrstu disasemblera, koji je smešten u video
memoriji. Program počinje od adrese 16384, u dužini 4096 bajtova, tako da za
rad korisniku ostaje ceo raspoloživi RAM, u koji može da se učita celokupna
igra. Rad se odvija u donjoj trećini ekrana.
Svaka komanda se aktivira pritiskom na pojedino dugme tastature. Uz neke
komande potrebno je uneti i parametre. Svi parametri koji se unose moraju biti
u HEXADECIMALNOM OBLIKU. U slučaju da smo pogrešili naredbu, iz edit moda
izlazi se pritiskom na CAPS i SYMBOL SHIFT istovremeno.
Kratak opis naredbi:
--------------------
M - memory: Posatavlja memorijiski pokazivač na određenu adresu.
Unesite četiri znaka koji predstavljaju novu adresu u
hexadecimalnom obliku.
Q - decrement: smanjuje memorijski pokazivač za 1
A - increament: povećava memorijski pokazivač za 1
G - get: Unosite string koji treba pronaći u memoriji. Oznaka XX znači
da se bajt na tom mestu zanemaruje.String koji se unosti mora
imati 8 karaktera. Npr. XXCD5605
N - next: traži se sledeće pojavljivanje zadatog stringa (komanda G)
P - message: pomoću ove komande možete na primer upisati svoje ime u
tuđ program. Upisuje se do 42 znaka. Završavate sa ENTER.
B - poke: služi za unošenje određenog POKE-a na adresu koju pokazuje
memorijiski pokazivač.
D - dump: lista sadržaj memorije na taj način što vrednost svake
lokacije predstavlja kao ASCII simbol. BREAK za povratak.
L - list: ovo je najmoćnija komanda u disasembleru. Lista sadržaj
memorije počev od adrese memorijskog pokazivača. Povratak se
vrši pritiskom na BREAK. Napomena: instrukcije koje
operišu sa IX i IY registrima štampaju se u malo promenjenom
obliku. Prvo se štampa prefix DD ili FD, a zatim
ekvivalentna mašinska instrukcija koja radi sa registarskim
parom HL. Ispred te naredbe štampaće se '*' , a iza nje 'IX'
ili 'IY'. Treći bajt instrukcije koja radi sa IX ili IY
registrima je uvek relativni pomak (-127,+128)
U - load: postoji mogućnost učitavanja do 10 različitih blokova (0-9).
Učitavanje se vrši od adrese memorijskog pokazivača +1.
Dužina programa se automatski određuje. Na lokaciju koju
pokazuje memorijski pokazivač učitava se flag byte.
S - save: kao što postoji mogućnost učitavanja do deset različitih
blokova, tako postoji mogućnost snimanja ovih blokova.
Snimanje se vrši na taj način što otkucamo redni broj
bloka koji želimo da snimimo.
Z - the end: Briše memoriju do RAMTOP-a (#5CB2). Ekvivalentno NEW
naredbi u bejziku.
H - hex/dec: vrši pretvaranje hexadecimalnog broja u decimalne.
Hexadecimalni brojevi su uvek unose sa 4 cifre
(npr. 00A0 -> 160)
J - dec/hex: vrši pretvaranje decimalnih u heksadecimalne brojeve.
Decimalni brojevi se onose sa 5 cifara.
(npr. 32768 -> 8000)
E - jump: startuje program od unete adrese. Nakon toga potrebno je
uneti još jedan parametar koji predstavlja vrednost SP (stack
pointer).
R - registri: pokazuje vrednost registara koje su dobijene pri
poslednjem izvršenju programa (komanda I)
Y - break point: postavlja tačku prekida, tj. ponovo ćete se
vratiti u disasembler sa novim vrednostima registara.
Pazite samo da program koji izvršavate ne piše nešto
po video memoriji! Po izvršenju programa vraća se
originalni sadržaji lokacija gde je postavljena tačka
prekida.
I - execute: Izvršava program od unete adrese. Važno je to da registri
dobijaju vrednosti koje su imali posle poslednjeg
izvršavanje programa komandom I. Po nailasku na break
point (komanda Y) vraćate se u disasembler. Vrlo korisna
instrukcija za izvršavanje samo dela programa. Koristi
se npr. kada je potrebno da se neki deo programa koji sa
analizira od-XOR-uje.
O - printer on: od sada će se svi podaci dobijeni komandama 'L' i 'D'
slati na printer. Ostale komande će i dalje koristiti
ekran. Memorija od 23296 do 23551 biće korišćena za
printer buffer.
K - printer off: nastavlja ispisivanje karaktera na ekran.
F - get text: unosimo određeni tekst za traženje. Npr. GAME OVER. Ako
umesto nekog slova stavimo '?' to mesto će biti ignorisano.
V - find next text: vrši pretraživanje memorije i traži zadani tekst
komandom 'F'
------------------------------------------------------------------------
Poboljšanja uradio Nikola Alivojvodć (ARC soft) johnnya@eunet.yu Nova verzija
POKEMAKERA završena je 19.08.1990.
Novo:
-----
* Ukinuta je podrška za štampač (moralo se, da bi program i dalje bio
samo u video memoriji).
* očitavanje tastature se više ne vrši preko sistemskih varijabli, tako
da je moguće bez bojazni učitavati igru i preko dela memorije gde
se nalaze sistemske varijable.
* za prekid edit moda (escape) dovoljno je pritisnuti SYMBOL SHIFT
loša posledica ovoga je što recimo pri unosu teksta više ne možete
da koristite simbole koji se dobijaju pomoću SYMBOL SHIFT-a (!"#<>...)
* za prekid listanja (komanda L ili D) dovoljno je pritisnuti SPACE
* W - text to mem: ako komandom F unesete jedan hexadecimalni niz (max
42 karaktera = 21 bytes) ova komanda će taj niz
prebaciti na mesto memorijskog pokazivača. Dakle,
nešto kao B..Q..B..Q..B..Q... itd.
* T - header: učitava blokove koji imaju header i pri tome automatski
uzima podatke gde blok treba da se učita. Dakle, kao
LOAD "" [CODE] u bejziku. Pri tome vas obaveštava o
o podacima koje je našao u header-u.
* O - pointer: pamti trenutnu vrednost memorijskog pokazivača.
* K - back to: vraća vrednost memorijskog pokazivača zapamćenog
komandom O
* Z - the end: postavlja dodatno pitanje: END Y/N ?
* C - fill to: unesiti željenu vrednost (veću od memorijskog pokazivača!)
i deo memorije od memorijskog pokazivača, pa do te
vrednosti biće ispunjen bajtom koji se nalazi na adresi
memorijskog pokazivača.
|