[zxspectrum] Re: Funzioni definite dall' utente

  • From: Paolo Ferraris <pieffe8@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Tue, 30 Oct 2012 00:38:29 -0700

On 10/30/2012 12:19 AM, Andrea Vavassori wrote:
Ciao Paolo,

in data martedì 30 ottobre 2012, alle ore 7.37, hai scritto:

Credo di aver capito come si puo` far ritornare una stringa a USR N.
Ho dato un'occhiata a come funziona la funzione STR$, e vedo che chiama
la routine STK-STO-$ invece che STK-STORE. E' molto simile a STK-STORE
tranne che inoltre resetta il flag 6 di FLAGS, indicando che il valore
ritornato e` di tipo stringa.
Ehm...  l'  avevo visto anche io, ma la CHR$ invece usa la STK-STORE e
quindi   occorre   qualche  ulteriore indagine. Magari e' CHR$ che non
setta  correttamente  il  bit  come  dovrebbe  fare (scoperto un nuovo
bug?).
A me invece pare che CHR$ chiami STK-STO-$...

http://www.wearmouth.demon.co.uk/zx82.htm#L35C9



Cmq,  l'  inserimento  di  una DEF FN con argomento stringa e funzione
numerica (USR) e' solo un problema di controllo di sintassi. Una prova
rapida con:

10 DEF FN a$(n)= USR 64000 (si digita lo spazio al posto del $, poi si
fa un POKE 23761,CODE "$")

POKE 64000,201

PRINT FN a$(1) risponde 64000.

LET b$= FN a$(1) risponde "C nonsense in basic"

Quindi  il  codice  di  FN  chiama effettivamente la routine a 64000 e
termina comunque il suo giro, tant'e' che la PRINT prende per buono il
valore numerico ritornato e lo stampa senza colpo ferire. Giustamente,
invece,  la routine del LET non accetta il risultato numerico avendone
chiesto uno stringa, e va in errore.
Interessante. Quindi l'interprete (non l'editor) ignora se la variabile della FN e` di tipo stringa o numerico.


Sembrerebbe  quindi che lo Spectrum sia gia' a posto e che tocchi solo
a me fare il codice che produce il risultato corretto sul workspace.

rimando tutto a stasera, adesso il lavoro mi aspetta... :-)

Ciao!

Andrea



.



Other related posts: