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. Sempre dando un'occhiata alla routine di STR$ sembrerebbe che STK-STO-$ si aspetti che DE contenga l'indirizzo di partenza della stringa e BC la sua lunghezza.
A questo punto credo che basti che la routine in LM sostitusca l'indirizzo di ritorno dello stack con uno specifico che chiami SCK-STO-$.
Paolo On 10/29/2012 1:41 PM, Andrea Vavassori wrote:
Ciao Stefano, in data lunedì 29 ottobre 2012, alle ore 14.17, hai scritto: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).Questo e' tutto sommato abbastanza semplice: all' inizio della routine chiamata dalla funzione USR bisogna fare un POP HL per scartare la chiamata alla subroutine STACK-BC che la funzione stessa aveva predisposto. A questo punto si carica sullo stack un qualsiasi valore floating, per es. chiamando la STK-STORE a $2AB6 dopo aver predisposto i registri A, BC e DE in modo opportuno. Ciao! Andrea .