Scrivere codice in linguaggio macchina agli inizi degli anni ’80 servendosi della tabella degli opcode e della calcolatrice era un lavoro a dir poco massacrante: bastava modificare qualcosa e quasi sicuramente si dovevano ricalcolare gli indirizzi dei salti, come ho accennato in un precedente articolo.
C’era, insomma, un’enorme differenza fra programmare soltanto in BASIC e aggiungere codice macchina al sorgente: il lavoro da fare era troppo ed estremamente difficile. Infatti le parti di codice macchina erano generalmente limitate a piccole porzioni. Si faceva poco perché fare di più era oggettivamente una follia.
Eppure leggendo le riviste dell’epoca che riportavano listati completi da digitare, col passare del tempo notavo che le parti in linguaggio macchina erano sempre più lunghe. Addirittura arrivavano a diverse pagine di numeretti da scrivere in fila (nella speranza di non sbagliarne qualcuno: potete immaginare cosa significasse andare scovare un errore di digitazione). C’era chi arrivava a estendere il BASIC aggiungendo alacremente istruzioni e funzioni. Come diavolo facevano?
La risposta non tardò ad arrivare allorché venne recensito un programma “strano”: Supermon64 per il Commodore 64. Si trattava di una cartuccia che metteva a disposizione quello che veniva chiamato “monitor” (per il codice macchina): un utilissimo aggeggio che permetteva di interrompere l’esecuzione di un programma e andare a sbirciare nel codice, seguirne passo passo l’esecuzione, controllare i registri, i dati, lo stack, ecc..
Insomma, l’intero computer era sotto il diretto e assoluto controllo di questo monitor e, quindi, divenne ben presto l’oggetto del desiderio per i programmatori più smanettoni, che non si accontentavano più del BASIC e cercavano strumenti “più potenti“, ma soprattutto da hacker e cracker.
Strumento che, tra l’altro, permetteva di risolvere brillantemente e velocemente il problema della scrittura del codice macchina di cui parlavo prima, visto che era dotato di un artigianale (ma funzionale!) assemblatore che traduceva al volo in linguaggio macchina i ben più comprensibili mnemonici.
L’interesse per questo tipo di applicazioni divenne così forte che la Commodore pensò bene di infilarlo nella ROM di Commodore 16 e Plus 4 prima, e del 128 poi. Si poteva accedere al monitor in diversi modi: digitando una comoda istruzione BASIC (MONITOR), utilizzando una speciale istruzione della CPU (BRK, da inserire in precisi punti del codice macchina), oppure premendo un’opportuna combinazione di tasti (RESET + RUN/STOP).
Tutto ciò portò alla diffusione dell’assembly come linguaggio, che divenne lo strumento d’elezione per i programmatori più esperti.