.TITLE MN05.. NODE MANIPULATION ROUTINES .IDENT /MN05../ ; .PAGE ; ; N$SETUP:: ;CHECK IF NODE TABLE VALID ; ; EXIT CONDITIONS ; SUCCESS OR ERROR FLAGS ONLY ; TST NBLKADD ;IS NODE TABLE SET UP BEQ 10$ ;J IF TABLE NOT SET UP EXITSUCCESS ;EXIT INDICATING TABLE SET UP 10$: EXITERRORR ;EXIT INDICATING TABLE NOT SET UP ; ; N$FIRST:: ;GET ADDRESS OF FIRST & LOAD NNEXT ; ; EXIT CONDITIONS ; R0 -> ACCESS ADDRESS IF STATUS = SUCCESS ; CALL N$SETUP ;IS TABLE SET UP IFSUCCESS 10$ ;J IF NODE TABLE SET UP RETURN ;EXIT IF NOT SET UP 10$: MOV NFIRST,R0 ;HOLD HEADER ADDRESS OF FIRST NODE MOV R0,NPRESENT ;SET PRESENT NODE POINTER BR N$SEXIT ;EXIT SUCCESS ; ; N$PRESENT:: ;GET ADDRESS OF PRESENT & LOAD NNEXT ; ; EXIT CONDITIONS ; R0 -> ACCESS ADDRESS IF STATUS = SUCCESS ; CALL N$SETUP ;IS TABLE SET UP IFSUCCESS 10$ ;J IF NODE TABLE SET UP RETURN ;EXIT IF NOT SET UP 10$: MOV NPRESENT,R0 ;HOLD HEADER ADDRESS OF PRESENT NODE N$SEXIT:: MOV R0,NNEXT ;SET NEXT NODE POINTER CMP (R0)+,(R0)+ ;INCREMENT POINTER TO ACCESS ADDRESS EXITSUCCESS ;EXIT TO CALLING PROGRAM ; ; N$LAST:: ;GET ADDRESS OF LAST & LOAD NNEXT ; ; EXIT CONDITIONS ; R0 -> ACCESS ADDRESS IF STATUS = SUCCESS ; CALL N$SETUP ;IS TABLE SET UP IFSUCCESS 10$ ;J IF NODE TABLE SET UP RETURN ;EXIT IF NOT SET UP 10$: MOV NLASTADD,R0 ;HOLD HEADER ADDRESS OF LAST NODE MOV R0,NPRESENT ;SET PRESENT NODE POINTER BR N$SEXIT ;EXIT WITH SUCCESS ; ; .END ; ; ;