LD B,+91 Set B to 145 dec for the
exponent i.e. for up to 16 bits
in the integer.
LD A,D Test whether D is zero so that
AND A at most 8 bits would be needed.
JR NZ,32B1,RS-NRMLSE Jump if more than 8 bits needed.
OR E Now test E too.
LD B,D Save the zero in B (it will give
zero exponent if E too is zero).
JR Z,32BD,RS-STORE Jump if E is indeed zero.
LD D,E Move E to D (D was zero, E
not).
LD E,B Set E to zero now.
LD B,+89 Set B to 137 dec for the
exponent - no more than 8 bits
now.
32B1 RS-NRMLSE EX DE,HL Pointer to DE, number to HL.
32B2 RSTK-LOOP DEC B Decrement the exponent on
each shift.
ADD HL,HL Shift the number right one
position.
JR NC,32B2,RSTK-LOOP Until the carry is set.
RRC C Sign bit to carry flag now.
RR H Insert it in place as the number
RR L is shifted back one place -
normal now.
EX DE,HL Pointer to byte 4 back to HL.
32BD RS-STORE DEC HL Point to the third location.
LD (HL),E Store the third byte.
DEC HL Point to the second location.
LD (HL),D Store the second byte.
DEC HL Point to the first location.
LD (HL),B Store the exponent byte.
POP DE Restore the 'other' pointer to
DE.
RET Finished.