Protezione, come si faceva una volta

 Oggi la protezione dei programmi utilizza diverse tecniche più o meno complesse.In passato, nel boom degli home computer, l’esigenza era fortemente sentita perché occorreva, come oggi, proteggere l’investimento per la creazione dei giochi.

Ogni home computer utilizzava tecniche particolari per posizionare le routine software necessarie per la protezione, ma non solo, utilizzavano anche zone di memoria particolari.

Un sistema comune consisteva di inserire una serie di meccanismi chiamate trappole, cioè verifiche forzate a run-time, oppure si disabilitavano i comandi SAVE e LIST necessari per apportarvi modifiche al programma.

Per esempio, nello Spectrum si utilizzava il buffer della stampante, posizionato tra gli indirizzi 23296 e 23551 in decimale. La zona era composta di 256 byte ed erano più che suffcienti per routine di questo tipo. L’unica limitazione consisteva di non poter utilizzare la stampante.

Negli Acorn si utilizzavano di solito le zone libere nelle pagine 9 e 10, nella 11 (ma non si dovevano utilizzare i tasti funzione) o nella 12 (in questo caso non si dovevano utilizzare gli UDG) e 13. Nell’ultima ipotesi non si dovevano utilizzare i dischetti e Econet.

Infine, nei Dragon e Tendy era possibile utilizzare il buffer del registratore (tra 300 e 3FF): in questo caso il programma non doveva però prevedere letture e scritture sul nastro. Oppure era anche possibile utilizzare sul Dragon le locazioni 76-77, E6-77, E6-FF, 114 e 11A-11F.

Probabilmente l’home più versatile era il Commodore: Infatti, questo computer permetteva di utilizzare la zona di memoria definita ombra o shadow, tra 49152 e 53247. Oppure era anche possibile utilizzare degli spazi liberi disseminati un po’ per la memoria, per esempio le locazioni 251-255 in pagina zero, la zona tra 679-767 utilizzata dal programma boostrap, o ancora vi erano disponibili diverse locazioni di memoria immediatamente prima o dopo il buffer di I/O per il registratore. Questi eventuali spazi potevano essere utilizzati per inserirvi delle istruzioni di salto in assembler.

Una domanda, chi si ricorda come caricare in memoria una routine in codice macchina del Basic da renderla trasparente all’utente? Inserendo, forse, un boostrap, come ad esempio

10 CLEAR N – 1
20 LOAD “file c/m” CODE