Routines 
Prev: 12947  Up: Map  Next: 12997 
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 61 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  12951  LD A,(HL)  If the first byte is not zero, return  the number cannot be a 'small integer'.  
12952  AND A  
12953  RET NZ  
12954  PUSH DE  Save the 'other' pointer in DE.  
12955  CALL INT_FETCH  Fetch the sign in C and the number in DE.  
12958  XOR A  Clear the A register.  
12959  INC HL  Point to the fifth location.  
12960  LD (HL),A  Set the fifth byte to zero.  
12961  DEC HL  Point to the fourth location.  
12962  LD (HL),A  Set the fourth byte to zero; bytes 2 and 3 will hold the mantissa.  
12963  LD B,145  Set B to 145 for the exponent, i.e. for up to 16 bits in the integer.  
12965  LD A,D  Test whether D is zero so that at most 8 bits would be needed.  
12966  AND A  
12967  JR NZ,RS_NRMLSE  Jump if more than 8 bits needed.  
12969  OR E  Now test E too.  
12970  LD B,D  Save the zero in B (it will give zero exponent if E too is zero).  
12971  JR Z,RS_STORE  Jump if E is indeed zero.  
12973  LD D,E  Move E to D (D was zero, E not).  
12974  LD E,B  Set E to zero now.  
12975  LD B,137  Set B to 137 for the exponent  no more than 8 bits now.  
RS_NRMLSE  12977  EX DE,HL  Pointer to DE, number to HL.  
RSTK_LOOP  12978  DEC B  Decrement the exponent on each shift.  
12979  ADD HL,HL  Shift the number right one position.  
12980  JR NC,RSTK_LOOP  Until the carry is set.  
12982  RRC C  Sign bit to carry flag now.  
12984  RR H  Insert it in place as the number is shifted back one place normal now.  
12986  RR L  
12988  EX DE,HL  Pointer to byte 4 back to HL.  
RS_STORE  12989  DEC HL  Point to the third location.  
12990  LD (HL),E  Store the third byte.  
12991  DEC HL  Point to the second location.  
12992  LD (HL),D  Store the second byte.  
12993  DEC HL  Point to the first location.  
12994  LD (HL),B  Store the exponent byte.  
12995  POP DE  Restore the 'other' pointer to DE.  
12996  RET  Finished. 
Prev: 12947  Up: Map  Next: 12997 