.TITLE MN04.. NODE MANIPULATION ROUTINES .IDENT /MN04../ ; ; ; ; .PAGE ; N$SEEK:: ;LOCATE NODE IN NODE TABLE ; ; ENTRY CONDITIONS ; R1 = NODE MARKERS ; ; EXIT CONDITIONS ; R0 -> ACCESS ADDRESS IF STATUS = SUCCESS ; CALL N$PRESENT ;SET TO PRESENT NODE ADDRESS IF VALID IFSUCCESS 20$ ;J IF VALID NODE TABLE 10$: EXITERROR ;EXIT WITH ERROR STATUS ; 20$: CMP -(R0),-(R0) ;INDEX TO MARKERS WORD CMP R1,@R0 ;IS PRESENT NODE THE NODE TO BE LOCATED BEQ 40$ ;J IF NODE FOUND ; 30$: CALL N$NEXT ;GET NEXT NODE ADDRESS CMP NPRESENT,NNEXT ;HAVE ALL NODES BEEN CHECKED BEQ 10$ ;J IF ALL NODES CHECKED ; CMP -(R0),-(R0) ;POINT TO START OF NODE HEADER TST @R0 ;IS NODE MARKED FOR DELETE BLT 30$ ;J IF NODE DELETED CMP R1,@R0 ;DO NODE FLAGS MATCH BNE 30$ ;J IF CORRECT NODE NOT FOUND MOV R0,NPRESENT ;HOLD ADDRESS OF PRESENT NODE 40$: CMP (R0)+,(R0)+ ;INCREMENT TO ACCESS ADDRESS EXITSUCCESS ;EXIT INDICATING NODE FOUND ; ; ; .END ; ; ;