Routines 
Prev: 3293  Up: Map 
Used by the routine at atn.
The routine at RE_ST_TWO continues here.
The address of this routine is found in the table of addresses. It is called via the calculator literal +3D by the routines at CIRCLE, DRAW, exp, ln and get_argt. The routine at RE_ST_TWO also continues here.
This subroutine is called to restack one number (which could be a 'small integer') in full fivebyte floatingpoint form.


re_stack  3297  LD A,(HL)  If the first byte is not zero, return  the number cannot be a 'small integer'.  
3298  AND A  
3299  RET NZ  
329A  PUSH DE  Save the 'other' pointer in DE.  
329B  CALL INT_FETCH  Fetch the sign in C and the number in DE.  
329E  XOR A  Clear the A register.  
329F  INC HL  Point to the fifth location.  
32A0  LD (HL),A  Set the fifth byte to zero.  
32A1  DEC HL  Point to the fourth location.  
32A2  LD (HL),A  Set the fourth byte to zero; bytes 2 and 3 will hold the mantissa.  
32A3  LD B,$91  Set B to +91 for the exponent, i.e. for up to 16 bits in the integer.  
32A5  LD A,D  Test whether D is zero so that at most 8 bits would be needed.  
32A6  AND A  
32A7  JR NZ,RS_NRMLSE  Jump if more than 8 bits needed.  
32A9  OR E  Now test E too.  
32AA  LD B,D  Save the zero in B (it will give zero exponent if E too is zero).  
32AB  JR Z,RS_STORE  Jump if E is indeed zero.  
32AD  LD D,E  Move E to D (D was zero, E not).  
32AE  LD E,B  Set E to zero now.  
32AF  LD B,$89  Set B to +89 for the exponent  no more than 8 bits now.  
RS_NRMLSE  32B1  EX DE,HL  Pointer to DE, number to HL.  
RSTK_LOOP  32B2  DEC B  Decrement the exponent on each shift.  
32B3  ADD HL,HL  Shift the number right one position.  
32B4  JR NC,RSTK_LOOP  Until the carry is set.  
32B6  RRC C  Sign bit to carry flag now.  
32B8  RR H  Insert it in place as the number is shifted back one place normal now.  
32BA  RR L  
32BC  EX DE,HL  Pointer to byte 4 back to HL.  
RS_STORE  32BD  DEC HL  Point to the third location.  
32BE  LD (HL),E  Store the third byte.  
32BF  DEC HL  Point to the second location.  
32C0  LD (HL),D  Store the second byte.  
32C1  DEC HL  Point to the first location.  
32C2  LD (HL),B  Store the exponent byte.  
32C3  POP DE  Restore the 'other' pointer to DE.  
32C4  RET  Finished. 
Prev: 3293  Up: Map 