Previous Page Single Page Next Page  

* FIG FORTH FOR SERIES-16 MACHINES PAGE 8

0289 * IN CONTRAST 'W' IS NOT USED BY TRUE PRIMITIVES. FOR EXAMPLE 0290 * THE '+' WORD ADDS THE TOP TWO VALUES ON THE DATA STACK, AND 0291 * HAS NO NEED OF 'W'. 0292 * 0293 * THE CODE FIELD FOR WORDS REQURING 'W' IS FILLED WITH A 'JST' 0294 * INSTRUCTION (I.E. SUBROUTINE CALL) TO THE ACTUAL ASSEMBLER 0295 * ROUTINE (E.G. DOCL, DOCN,...). THIS MEANS THAT THE RETURN 0296 * ADDRESS (STORED IN THE ADDRESS REFERRED TO BY THE 'JST' 0297 * INSTRUCTION) HOLDS THE VALUE THAT WOULD HAVE BEEN IN 'W'; 0298 * IT POINTS TO THE PARAMETERS. 0299 * 0300 * CROSS-SECTOR REFERENCE ISSUES ARE AVOIDED BY THE SIMPLE 0301 * EXPEDIENT OF PLACING ALL OF THESE ROUTINES IN SECTOR ZERO. 0302 * 0303 * FOR TRUE PRIMITIVES THE CODE FIELD ISN'T REALLY IDENTIFIABLE 0304 * AS SUCH, SINCE IT IS JUST THE FIRST INSTRUCTION OF THE 0305 * ASSEMBLER DEFINING THE PRIMITIVE. THIS HAS THE ADDITIONAL 0306 * ADVANTAGE THAT ONE WORD IS SAVED IN EACH PRIMITIVE SINCE 0307 * TRADITIONALLY THE CODE FIELD WOULD HAVE HELD A POINTER TO 0308 * THE CODE WHICH WAS LOCATED IN THE FOLLOWING WORD. 0309 * 0310 * DIAGRAMATICALLY: 0311 * 0312 * +----------+ 0313 * LIST OF WORDS | NAME | NFA 0314 * CURRENTLY BEING | ... | 0315 * EXECUTED | NAME | 0316 * +----------+ +----------+ 0317 * IP | WORD N-1 | | LINK PTR | LFA 0318 * +----------+ +----------+ +----------+ 0319 * |*| | ---> | WORD N | ---> | JST DOXX | CFA 0320 * +----------+ +----------+ +----------+ 0321 * (INDIRECT | WORD N+1 | | PARM. 1 | PFA 0322 * BIT SET) +----------+ +----------+ 0323 * | ... | | PARM. 2 | 0324 * +----------+ 0325 * | ... | 0326 * 0327 * SO, WHEN 'NEXT' DOES 'JMP* IP' CONTROL PASSES TO THE 0328 * ADDRESS IN 'WORD N', I.E. THE 'JST DOXX' INSTRUCTION, 0329 * TRANSFERRING CONTROL TO THE 'DOXX' SUBROUTINE (AT 0330 * DOXX+1), AND PLACING THE PFA (THE ADDRESS OF 'PARM. 1') 0331 * IN THE 'DOXX' LOCATION. 0332 * 0333 EJCT
  Previous Page Single Page Next Page