martedì 27 dicembre 2016

0 Il protettorato del listato.


Mi sento osservato...

Nel senso che da un po' di tempo a questa parte, le facezie che scrivo non passano del tutto inosservate. :) Ogni tanto, infatti, su "Concetto Piramidale" fanno capolino le personalità che per un motivo o per l'altro mi trovo a citare! Inizialmente son "poppati" fuori certi "retrocoders" italiani, menzionati per le loro partecipazioni a vari eventi come la "C64 16KB Cartridge Competition"... Qualche giorno fa s'è addirittura palesato l'ungherese Maros "Steveboy" István, che mi ha illuminato sui reconditi segreti che si celano dietro il listato del suo "Wild West Games" (del quale parlavamo QUI).

...E SON PICCOLE SODDISFAZIONI E REGALI DI NATALE A TRATTI COMMOVENTI, SIGNORI! NON SONO ABITUATO!!! :D

D'altro canto, non vorrei montarmi la testa, ché l'idea d'avere un potenziale pubblico di "lurkers" sotterrati come neanche gli "Zerg" di "Starcraft" sapevano fare, un po' mi intriga... ;)

"Ciao Marte! Mi piace seguirti a tua insaputa!!!".

Chessò... Metti che "iAN CooG" sia curioso di sapere se ho già aggiornato la libreria dell'"HVSC" alla revisione # 66 (non ancora... :P ) e, per scoprirlo, raccolga segretamente informazioni sul mio conto... :P Oppure chissà... Magari i fratelli Chiummo mi spiano per capire se ho veramente intenzione di mettermi a comporre "chiptune music" con il "GoatTracker", per far loro concorrenza (ci ho pensato/provato ma non sono assolutamente capace... Mi manca proprio l'orecchio musicale ed anche se mi ci metto d'impegno, al massimo sfodero cacofonie inascoltabili... :D ). ...O ancora, non è forse vero che "Groepaz" pende segretamente dalle mie labbra ed instrada lo sviluppo del "WinVICE" in una direzione piuttosto che in un'altra a seconda di quello che legge segretamente su questi schermi?! (...A proposito, visto che certamente mi segui, dovresti correggere il "loading" manuale delle configurazioni di "WinVICE V. 3.0", ché allo stato attuale mescola le impostazioni dei "drives" e delle "ROMs", quando carichi diversi "files di configurazione" uno dopo l'altro senza passare prima per il "reset to default"... Fixare! SCHNELL!!! ;) ).

Ecco... Vedete?! Ve lo dicevo io che mi montavo la testa!!! :P

Ad ogni modo, tornando a bomba, dicevamo che "Steveboy" è venuto personalmente a spiegarmi con un chiarissimo esempio come funziona il listato semigrafico di "Wild West Games".

Ovvero così...

...E di fatto, la sua spiegazione illustrata conferma l'unica ipotesi che mi ero formato in testa, quando per la prima volta tentai di spulciare il listato del suo giochino a tema "western". C'ENTRA IL COMANDO "REM"!!!

In pratica, come ci spiega anche la "C64-Wiki", questo comando "BASIC" interagisce in maniera anomala con le istruzioni espresse sotto forma di abbreviazioni "token" (esempio banale: i comandi diretti che gestiscono i cambi di colore del testo, tanto per dirne una...). In tal senso, se guardate la linea 15 del programma illustrato nell'immagine sovrastante, noterete un comando "REM" accompagnato per l'appunto da una lunga sequenza di spazi e "tokens". Degni di nota,  sopratutto gli spostamenti del cursore a ritroso, seguiti dai "blanks" e dal messaggio "HELLO WORLD!" (un classico! :) ) con i caratteri preceduti da svariati "cambi di colore". Al "RUN", questa linea di codice è inerte, essendo semplicemente una nota, ma il "LIST" accende inaspettatamente tutta la magia che reca in sé e la sequenza di "tokens" viene ESEGUITA, invece di essere semplicemente visualizzata sullo schermo! :)

"Bug"? "Feature"?! Non so rispondere alla domanda, ma il semplice fatto che questa possibilità esista ha degli interessanti risvolti ed implicazioni che si spingono ben al di là della possibilità di creare intestazioni e firme colorate direttamente all'interno del codice...

In tal senso, per introdurre l'argomento conclusivo della nostra dissertazione, mi ricordo perfettamente che negli anni ottanta, smanettando a casaccio, avevo scoperto vari "POKE" che potevano tornare utili per creare delle banali protezioni da applicare ai propri programmi "BASIC". Per esempio, "POKE 808,239" disabilitava il tasto "RUN/STOP", "POKE 792,193" faceva la stessa cosa con il pulsante "RESTORE", mentre "POKE 775,200" disattivava direttamente il comando "LIST" (...ed il divertentissimo "POKE 774,0" trasformava ogni listato nella sola sequenza dei suoi numeri di linea!!! :D ).

Tuttavia, sussisteva un annoso problema che minava fin dalle fondamenta l'efficacia di tutte queste "protezioni"... Per essere funzionali, infatti, i suddetti "POKE" dovevano essere ESEGUITI! (O in maniera diretta, oppure tramite il "RUN", se incorporati in un listato...). Morale: se caricavi un qualsiasi programma che li utilizzava e lo listavi prima di mandarlo in esecuzione, potevi leggere laqualunque e chicchessia , senza problemi! ;)

...E qui il cerchio si chiude e ritorna in auge il nostro simpaticissimo comando "REM" e la sua peculiare tendenza all'esecuzione dei "tokens" direttamente al "LIST"... :)

TA DAH!!!

Orbene, prendete in esame questo banalissimo listato:

10 REM QUESTA RIGA LA VEDI...▙
20 PRINT "MA IL 'LIST' E' OFFUSCATO!"

Il simbolo grafico che segue i tre puntini di sospensione è la nostra bacchetta magica! All'atto pratico è un semplice "SHIFT+L", ma a livello di codice è l'equivalente della rivoluzione copernicana del "BASIC V2"! :D

Infatti, "▙" è un "token" che non ha corrispondenze tra i comandi "BASIC" del "C64" e siccome abbiamo già ampiamente visto che su questa macchina il "LIST" esegue direttamente tutti i "tokens" incorporati in una stringa "REM", il risultato è quello che si palesa apertamente in fotografia: un bel "?SYNTAX ERROR" alla semplice richiesta del listato (PRIMA DEL "RUN"!!!). Il "RUN", d'altro canto, è assolutamente impassibile ed immune al "glitch", perché ignora semplicemente i vari "REMarks" presenti nel codice, "tokens" inclusi! :)

In questo modo, al tempo era possibile implementare una protezione del listato "BASIC" decisamente comoda e solida, magari altresì abbinata ad un colorato e folkloristico "copyright" semigrafico del proprio programma (come insegna "Wild West Games"...).

In conclusione, è bello scoprire alla fine del 2016, delle nozioni che mi sarebbero state utili perlomeno una trentina di anni fa! :D Tra questa ed il fatto di aver capito come si masterizzano professionalmente i nastri del "C64", sono ancor di più in una botte di ferro, in caso di regressioni tecnologiche!!! :)

Cos'è questo QRCode?
Come l'hai realizzato?


Nessun commento:

Ritorna in alto! Related Posts Plugin for WordPress, Blogger...