Previous Page Single Page Next Page  

* FIG FORTH FOR SERIES-16 MACHINES PAGE 27

1083 * **** (FIND) **** 1084 * USED BY THE COMPILER. FIND A WORD IN THE DICTIONARY 1085 * (STRING-ADDRESS NFA ==> PFA LENGTH TRUE (OR FALSE)) 1086 * STRING-ADDRESS IS (WORD) ADDRESS OF THE WORD CONTAINING 1087 * LENGTH BYTE, OF THE STRING BEING SOUGHT. NFA IS THE 1088 * NAME FIELD ADDRESS OF THE WORD IN THE DICTIONARY WHERE 1089 * THE SEARCH BEGINS. PFA IS THE PARAMETER FIELD ADDRESS 1090 * OF THE DICTIONARY ENTRY WHICH IS FOUND. IF WORD NOT 1091 * FOUND ONLY ONE RESULT (0, FALSE) IS RETURNED. 1092 * 1093 * HEAD FNUL,(FIND),PFND 1094 000433 TLNK SET * 1095 00433 003250 VFD 1,0,1,FNUL,6,6,8,'250 1096 * =<FNUL,6>,'(' 1097 00434 143311 BCI 2,FIND 00435 147304 1098 00436 024400 VFD 8,'051 =')' 1099 00437 0 000403 DAC LINK 1100 000433 LINK SET TLNK 1101 000440 PFND EQU * 1102 00440 1 02 00002 LDA 2,1 PICK UP STRING ADDRESS 1103 00441 0 04 00104 STA T1 1104 00442 0 04 00105 STA T2 1105 00443 1 02 00001 LDA 1,1 PICK UP NFA 1106 00444 0 04 00106 STA T3 1107 * 1108 00445 -0 02 00106 FNDL LDA* T3 1109 00446 0 04 00110 STA T5 SAVE FIRST WORD OF NFA 1110 00447 -0 05 00105 ERA* T2 1111 00450 0 03 00725 ANA ='037577 LOSE FLAG IN LENGTH BYTE, MS BITS 1112 00451 101040 SNZ 1113 00452 0 01 00467 JMP FNDS 1114 * 1115 * WORDS DON'T MATCH - FIND END OF STRING 1116 00453 -0 02 00106 FNDX LDA* T3 1117 00454 0 12 00106 IRS T3 STEP POINTER 1118 00455 0 03 00724 ANA ='200 LOOK AT MS BIT OF LOWER BYTE 1119 00456 100040 SZE 1120 00457 0 01 00453 JMP FNDX 1121 00460 -0 02 00106 LDA* T3 PICK UP LINK TO PREVIOUS NFA 1122 00461 101040 SNZ 1123 00462 0 01 00525 JMP FNDN 1124 00463 0 04 00106 STA T3 1125 00464 0 02 00104 LDA T1 1126 00465 0 04 00105 STA T2 GO BACK TO START OF DESIRED STRING 1127 00466 0 01 00445 JMP FNDL 1128 EJCT
  Previous Page Single Page Next Page