[zxspectrum] Re: ZX Coding competition

  • From: Roberto Montaruli <rmontaruli@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 23 Oct 2003 08:11:19 -0700 (PDT)

--- Alfonso Martone <a.martone@xxxxxxxxxxx> wrote:
> > > Per quanto riguarda la conversione di un numero in virgola mobile
> > > in intero bastano solo queste 2 istruzioni?
> 
> Oops. Scusate l'ennesimo messaggio, ma qualcosa non mi quadra...
> 
> Se io dallo Spectrum Basic faccio "LET a=60000", il numero e' intero 
> ma viene memorizzato in floating point con mantissa 0 ed esponente 
> "00/xx/xx/00", cioe' come "00 00 60 EA 00", dove $EA60 e' proprio 
> 60000!

No, fermo, aspetta li'...
Questa cosa funziona solo con gli interi.

Se il numero e' intero lo spectrum lo scrive cosi', se invece e' un reale,
allora lo scrive a tutta mantissa.

Siccome nella scrittura floating point c'e' un bit sempre a 1 (mi pare l'ultimo
del primo dei 5 byte ma non ricordo), allora quel bit funge anche da flag.
Se e' 1, il numero e' in virgola mobile e occorre considerare tutti e 5 i byte.
Se e' 0, il numero e' intero e allora puoi leggere solo i byte 3,4

> 
> A questo punto il mio programma che converte un float in un intero 
> diventa qualcosa tipo:
> 
>          ld bc, (23770)
>          ret
> 
> La conversione e' esatta, e vale per qualsiasi numero da 0 a 65535! 
> :-)

No, mi sa che vale per ogni numero da -32768 a 32767



=====
//
//   In a world without walls and fences
//     you would not need windows and gates. 
//                               (Confucio)
==
P'n'P: http://cnn.com/TECH/computing/9804/20/gates.comdex/index.html


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

Other related posts: