>Il fatto che istruzioni del tipo DEF FN a$(x) = USR 64000 non siano >accettate viene dal fatto che USR N ritorna un tipo di dato numerico (il >contenuto dei registri BC, per essere precisi). > >Non ho assolutamente idea di come faccia il beta basic. Puo` essere che >il codice vero sia semplicemente offuscato. Comunque istruzioni di >questo tipo non sono accettate da linea di comando neanche con il beta >basic caricato. Il modo per restituire valori diversi dall'intero su BC non è banale da spiegare ma c'è. Opus Discovery risponde con un valore in Floating Point al comando 'PRINT USR 8' (ovvero il numero di versione '.' subversion). La tecnica usata ha a che fare con l'FP Calculator Stack, ovvero lento ma piccolissimo (e inesorabile) cuore matematico dei Sinclair. Non mi ricordavo che fosse vietato abbinare USR n a una FN di tipo stringa, probabilmente basta attivare una qualsiasi 'workaround' sintattica al problema ad esempio CHR$ USR(n) o STR$ USR(n) e poi 'ribilanciare' l'output con il codice macchina (credo collocato sempre sullo stack FP), tanto basta che FN si trovi l'output giusto al ritorno.. Altri trucchi per forzare l'interprete BASIC a recepire sintassi 'particolari' sono invece di solito basati sul 'trap' dell'errore (ERR_SP e simili) o sull'intervento dei meccanismi di paging dell'interfaccia disco in questione, e quindi specifici di ogni device.. ma l'effetto è molto elegante (vedi la consistente letteratura di esempi relativi alla Interface 1 per aggiungere comandi al BASIC). Dal canto mio preferisco lavorare direttamente sulle variabili BASIC. E' più pulito e universale :) ..evito per una volta di citare z88dk, che già fornisce quanto occorre.. ops ! P.S. Cariiiino ! http://scratchpad.wikia.com/wiki/DEF_FN