LD A,(HL) the next literal is fetched and used unreduced. 33DE FORM-EXP ADD A,+50 The exponent, e, is formed by LD (DE),A the addition of Hex.50 and passed to the calculator stack as the first of the five bytes of the result. LD A,+05 The number of literals specified SUB C in C are taken from the source INC HL and entered into the bytes of INC DE the result. LD B,+00 LDIR POP BC Restore BC. EX (SP),HL Return the result pointer to HL EXX and the next literal pointer to POP HL its usual position in H' & L'. EXX LD B,A The number of zero bytes XOR A required at this stage is given by 33F1 STK-ZEROS DEC B 5-C-1; and this number of zeros RET Z is added to the result to make LD (DE),A up the required five bytes. INC DE JR 33F1, STK-ZEROS THE 'SKIP CONSTANTS' SUBROUTINE This subroutine is entered with the HL register pair holding the base address of the calculator's table of constants and the A register holding a parameter that shows which of the five constants is being requested. The subroutine performs the null operations of loading the five bytes of each unwanted constant into the locations 0000, 0001, 0002, 0003 and 0004 at the beginning of the ROM until the requested constant is reached. The subroutine returns with the HL register pair holding the base address of the requested constant within the table of constants. 33F7 SKIP-CONS AND A The subroutine returns if the 33F8 SKIP-NEXT RET Z parameter is zero, or when the requested constant has been reached. PUSH AF Save the parameter. PUSH DE Save the result pointer. LD DE,+0000 The dummy address. CALL 33C8,STK-CONST Perform imaginary stacking of an expanded constant. POP DE Restore the result pointer. POP AF Restore the parameter. DEC A Count the loops. JR 33F8,SKIP-NEXT Jump back to consider the value of the counter. THE 'MEMORY LOCATION' SUBROUTINE This subroutine finds the base address for each five byte portion of the calculator's memory area to or from which a floating-point number is to be moved from or to the calculator stack. It does this operation by adding five times the parameter supplied to the base address for the area which is held in the HL register pair. Note that when a FOR-NEXT variable is being handled then the pointers are changed so that the variable is treated as if it were the calculator's memory area (see address 1D20). 3406 LOC-MEM LD C,A Copy the parameter to C. RLCA Double the parameter. RLCA Double the result. ADD A,C Add the value of the parameter to give five times the original