.TITLE MT05.. TABLE MANIPULATION ROUTINES .IDENT /MT05../ ; ; AUTHOR :- J.S.CLIFTON. ; DATE :- 20TH OCTOBER 81. ; ; T$SETUP:: ;CHECK IF NODE TABLE VALID. ; ; EXIT CONDITIONS. ; SUCCESS IF SORT NODE TABLE SET UP OK. ; TST TADDRESS ;IS SORT ADDRESS SET UP. BEQ 10$ ;ERROR IF NOT. EXITSUCCESS 10$: EXITERROR ; ; T$FIRST:: ;GET ADDRESS OF FIRST. ; ; EXIT CONDITIONS. ; R0 -> ACCESS ADDRESS IF STATUS = SUCCESS. ; CALL T$SETUP ;CHECK NS TABLE SET UP. IFERROR 10$ ;EXIT IF NOT. TST @TADDRESS ;ARE THERE ANY ITEMS IN TABLE BEQ 10$ ;EXIT ERROR IF NOT. MOV NFIRST,NPRESENT ;REMEMBER PRESENT. MOV TFIRST,R0 ;GET THE FIRST ENTRY ADDRESS. MOV R0,TPRESENT ;REMEMBER PRESENT ADDRESS. MOV 2(R0),R0 MOV -4(R0),CD.KEY ;REMEMBER THE KEY. MOV R0,CD.SRC ;REMEMBER THE STRING ADDRESS. EXITSUCCESS 10$: EXITERROR ; ; T$LAST:: ;GET ADDRESS OF LAST. ; ; EXIT CONDITIONS. ; R0 -> ACCESS ADDRESS IF STATUS = SUCCESS. ; CALL T$SETUP ;CHECK NS TABLE SET UP. IFERROR 10$ ;EXIT IF NOT. TST @TADDRESS ;ARE THERE ANY ITEMS IN THE TABLE. BEQ 10$ ;EXIT ERROR IF NOT. MOV NLASTADD,NPRESENT MOV TLAST,R0 ;GET THE LAST ENTRY ADDRESS. MOV R0,TPRESENT ;REMEMBER PRESENT ADDRESS. MOV 2(R0),R0 MOV -4(R0),CD.KEY ;REMEMBER THE KEY. MOV R0,CD.SRC ;REMEMBER THE STRING ADDRESS. EXITSUCCESS 10$: EXITERROR ; ; T$PRESENT:: ;GET ADDRESS OF PRESENT. ; ; EXIT CONDITIONS. ; R0 -> ACCESS ADDRESS IF STATUS = SUCCESS. ; CALL T$SETUP ;CHECK NS TABLE SET UP. IFERROR RETURN ;EXIT IF NOT. TST TPRESENT ;IS THERE AN ENTRY. BNE 10$ EXITERROR ;EXIT ERROR IF NOT. 10$: MOV TPRESENT,R0 ;GET PRESENT ENTRY ADDRESS. MOV 2(R0),R0 MOV -4(R0),CD.KEY ;REMEMBER THE KEY. MOV R0,CD.SRC ;REMEMBER THE STRING ADDRESS. EXITSUCCESS ; ; .END