Previous Page Single Page Next Page  

* FIG FORTH FOR SERIES-16 MACHINES PAGE 6

0199 ****************************************************************** 0200 * 0201 * USE OF REGISTERS 0202 * 0203 ****************************************************************** 0204 * 0205 * THE ONLY MACHINE REGISTER WITH A SPECIAL FORTH-RELATED USE 0206 * IS THE INDEX REGISTER. THIS IS USED TO REFER TO THE DATA STACK. 0207 * SINCE THE X REGISTER CANNOT DIRECTLY BE DECREMENTED WHEN VALUES 0208 * ARE PUSHED ONTO THE DATA STACK THE X REGISTER'S VALUE MUST 0209 * ITSELF BE MANIPULATED IN THE ACCUMULATOR. HOWEVER, THE VALUE IN 0210 * THE ACCUMULATOR (THE VALUE TO BE PUSHED) MUST BE SAVED FIRST. 0211 * SO, THE X REGISTER POINTS TO THE FIRST FREE LOCATION ON THE 0212 * STACK (AS OPPOSED TO THE LAST OCCUPIED LOCATION) SO THAT THE 0213 * ACCUMULATOR MAY BE SAVED BY 'STA 0,1' BEFORE THE X REGISTER 0214 * IS DECREMENTED. (IT IS NOT POSSIBLE TO CODE 'STA -1,1') 0215 * TOP-OF-STACK IS ADDRESSED AS '1,1', NEXT-ON-STACK AS '2,1'. 0216 * 0217 * OTHER TRADITIONAL FORTH REGISTERS: 0218 * 0219 * IP - INTERPRETER POINTER 0220 * RP - RETURN STACK POINTER 0221 * UP - USER AREA POINTER 0222 * 0223 * ARE MAINTAINED IN MEMORY WORDS IN SECTOR ZERO (SO THEY CAN 0224 * BE ACCESSED FROM ALL SECTORS). 0225 * 0226 * SINCE THERE IS NO AVAILABLE INDEX REGISTER FOR THE RETURN 0227 * STACK POINTER, THE POINTER ITSELF HAS TO BE MANIPULATED IN THE 0228 * ACCUMULATOR, AND IF A SIMPLE POINTER IS MAINTAINED IN MEMORY 0229 * THEN IT IS DIFFICULT TO PICK UP ANYTHING BUT THE TOP-OF-STACK 0230 * VALUE, WHEN IT IS COMMON (E.G. FOR LOOPING) TO NEED THE TOP TWO 0231 * VALUES. TO ADDRESS THIS, (RP) POINTS TO THE TOP-OF-STACK VALUE 0232 * AND A SECOND POINTER, RP1, IS MAINTAINED POINTING AT THE 0233 * NEXT-ON-STACK. 0234 * 0235 * THE TRADITIONAL FORTH REGISTER 'W', THE WORKING POINTER, DOES 0236 * NOT EXIST IN THIS IMPLEMENTATION. 0237 * 0238 EJCT
  Previous Page Single Page Next Page