AMIGABYTE presenta AMIGA-DEBUGGER v1.0 Amiga-Debugger e' la naturale continuazione del programma ROMCRACK V1.01. Esso, come il suo predecessore, sfrutta un interrupt per poter essere richiamato qualsiasi momento: la sua caratteristica fondamentale e' quindi quella di poter interrompere qualsiasi programma in esecuzione sul computer, in modo simile all'azione della cartuccia AMIGA ACTION REPLAY. Essendo rispetto ad essa sprovvisto di hardware, Amiga-Debugger non puo' svolgerne tutte le funzioni (per esempio non puo' indicare il contenuto dei registri custom a sola scrittura) e tuttavia ha rispetto ad essa molti vantaggi, primo fra tutti quello di essere facilmente espandibile e modificabile, cosi' che si potranno creare nuove versioni del programma, anche personalizzate. Rispetto a ROMCRACK v1.01, Amiga-Debugger ha in piu' alcuni vantaggi, in particolare permette di assemblare direttamente in memoria, senza essere costretti a ricordarsi a memoria tutti i codici esadecimali delle istruzioni in linguaggio macchina. Il nuovo nome e' stato adottato per sottolineare la applicazione piu' adatta per questo programma, anche se esso puo' essere utilizzato (MOLTO) efficacemente anche per sproteggere e analizzare programmi che non siano stati scritti dall'utente. COME LANCIARE E UTILIZZARE AMIGA-DEBUGGER Da CLI digitate: 1> dbln e il pacchetto sara' lanciato. Subito dopo, seguendo le istruzioni che compariranno sul video, RESETTATE L'AMIGA con la pressione dei soliti tasti CTRL+AMIGA+AMIGA. Quando apparira' la mano che richiede l'inderimento del WorkBench, Amiga-Debugger sara' gia' attivo e funzionante. Per accertarvene, con il JOYSTICK collegato in porta 2, tenendo premuto FIRE, spostate la leva a SINISTRA: il colore dello schermo variera' rapidamente. Questo e' cio' che accade quando sul computer non gira alcun programma, e l'elaboratore sta solo eseguendo delle istruzioni poste nella ROM: per attivare il monitor di Amiga-Debugger, in questo caso, bisognera' premere ANCHE il tasto SINISTRO del MOUSE. Cio' non sarebbe necessario se invece ci fosse un qualsiasi programma in esecuzione, visto che il monitor si attiverebbe solo tramite i movimenti del JOYSTICK. Spostando SOLTANTO il joystick a sinistra si ottiene una pausa nel programma in esecuzione. I COMANDI UTILIZZABILI I comandi utilizzabili sono una TRENTINA, e sono quelli caratteristici dei piu' potenti monitor in circolazione. Per ottenere un aiuto generale, che ne ricorda la sintassi, premete il tasto HELP, mentre se volete avere informazioni utili sul sistema, digitate I e premete RETURN. Precisero' il significato delle abbreviazioni, facendo qualche esempio per chiarirle meglio. adr = address. Indica che al suo posto deve essere inserito l'indirizzo di una locazione di memoria. lgh = length. Esso indica una numero esadecimale. esempio: * Digitando il comando '& 50000 f00' (che ha sintassi '& adr lgh') si alloca una quantita' di memoria pari a $f00 bytes a parire dall'indirizzo $50000. * Digitando '( 2000' (sintassi: '( lgh' ) si allocheranno automaticamente 8192 bytes nel primo blocco di memoria libera in FAST RAM. ad1 ad2 ad3 = sono utilizzati per indicare la sintassi di un comando che necessita di tre paramentri, che sono tutti e tre come adr, cioe' indirizzi di locazioni di memoria esempio: * Digitando 't 50000 60000 65000' (sint. 't ad1 ad2 ad3') si spostera' il blocco di ram compreso ta $50000 e $60000 a partire da $65000. data = indica un gruppo di dati. Essi possono essere un elenco di valori in esadecimale, oppure anche un stringa. esempio: * Digitando 'h 50000 60000 22,33,44' (sint. 'h ad1 ad2 data') sara' ricercata la sequenza di bytes $223344 dalla locazione $50000 a $60000. * Digitando h 50000 60000 'pippo' (notare che gli apici demarcano l'inizio e la fine della parola) sara' ricercata tra gli stessi indirizzi la stringa ascii "pippo". Per alcuni comandi sono nocessarie istruzioni aggiuntive: ba = cambia la base degli argomenti in input. Per esempio, se digitiamo 'ba 10' e poi 'm 50000', la locazione a cui si riferira' il comando M non sara' piu' $50000, ma 50000 in DECIMALE. l = indica la lista copper attualmente in esecuzione. Non disponendo di buffer HARDWARE come Amiga Action Replay, essa viene prelevata dalla graphics library, ma non sempre corrisponde REALMENTE a quella in esecuzione. Comunque, se siete dei programmatori esperti (e questa funzione serve soprattutto a voi), sapete distinguere quando cio' accade e quando no. se var dat = assegna ad una stringa un determinato valore. Per esempio, digitando 'se pippo 50000', digitando in un secondo tempo 'a pippo' si assemblera' a partire dalla locazione $50000. E' una funzione comodissima. 'SE' senza paramentri, restituisce la lista delle variabili utilizzate. Il tasto ENTER permette di far vedere lo schermo del programma bloccato MENTRE il monitor e' in esecuzione: bastera' muovere il mouse su e giu per veder salire o scendere lo schermo. Da notare che non sempre e' possibile mantenere un output accettabile del monitor lm, visto che alcuni parametri necessari per visulizzare uno schermo non possono essere settati (per motivi gia' spiegati parlando del comando L). E' tuttavia SEMPRE possibile DIGITARE "alla cieca" i comandi, vedendone direttamente il risultato sul programma interrotto, cosi' che ci si puo' comportare di conseguenza! I tasti cursori permettono di richiamare una linea di comando gia' eseguita senza doverla riscrivere da capo: provate, e' molto utile! Ancora una cosa: all'interno del monitor vi e' automaticamente un sistema che intercetta OGNI eventuale GURU. Lanciando delle subroutines con j quindi non avrete alcun problema anche in casi di errori banali, come errori di indirizzo ecc!!! ALTRE NOTE: Per funzionare, il monitor del debugger deve poter disporre di uno schermo, che richiede della bitmap nella CHIPMEM. Viene compiuto quindi un travaso del contenuto del blocco che parte da $7ae20 e di lunghezza di $5000 bytes (stesso procedimento di ROMCRACK v1.01 !) nelle locazioni appositamente occupate da Amiga-Debugger. Queste saranno indicate alla partenza del monitor. Per questi motivi il pacchetto e' utilizzabile con maggior profitto dagli utenti che posseggono almeno UN MEGA di memoria. ESSO VIENE DISABILITATO DAI PROGRAMMI CHE ELIMINANO TOTALMENTE GLI INTERRUPTS, MANIPOLANDO LA LOCAZIONE INTERNA ($dff09a): COLORO CHE SONO IN GRADO, POSSONO RINTRACCIARE I RIFERIMENTI A QUESTO INDIRIZZO E MODIFICARLI OPPORTUNAMENTE (NON E' TROPPO DIFFICILE, SFRUTTANDO LO STESSO AMIGA-DEBUGGER PRIMA CHE VENGA ANNULLATO). CONCLUSIONI Il programma e' indubbiamente potente, e se volete averne un lampante esempio provate con la INTRODUZIONE che appare caricando il disco N.31 di AMIGABYTE: premete FIRE e JOYSTICK a sinistra e... zac! Si interrompera' lasciandovi il completo controllo della situazione. Fate tutte le modifiche che volete e poi digitate 'X' + RETURN e tutto riprendera' come prima... Vorrei conoscere le impressioni degli utenti su Amiga-Debugger, anche per sapere se devo elaborarne altre versioni. Se volete contattarmi, potete lasciarmi un messaggio su FIDONET in area AMIGA oppure scrivere al seguente indirizzo: CLAUDIO BERTONE VIA AVIGLIANA, 97 10096 COLLEGNO (TO) ITALIA Segnalazioni di bug, a commenti vari saranno benvenuti. Sono attualmente a conoscenza di un solo bug: non e' possibile lanciare programmi via WORKBENCH perche' il doppio click non e' riconosciuto (dato che il sistema usa il timer, e Amiga-Debugger PURE). Sto cercando di eliminarlo, e per il momento, accontentatevi di lanciare i programmi da CLI, oppure utilizzare il comando XX.