.TITLE MT11.. TABLE STRING/RESEQUENCING ROUTINES. .IDENT /MT11../ ; ; AUTHOR :- J.S.CLIFTON ; DATE :- 4TH AUGUST 82. ; ; T$RSEQ:: ;RESEQUENCE THE TABLE KEYS. ; ; ENTRY CONDITIONS ; R0 -> >= #1 TO START AT PRESENT POSITION ; OR #0 FOR COMPLETE RESEQUENCE. ; TST TPRESENT ;IS THERE AN ENTRY IN TABLE BGT 5$ ;IF SO CONTINUE SEC ;ELSE SET ERROR BR 50$ ;AND EXIT. ; 5$: CALL R$SAVE ;SAVE REGISTERS. ; CMP R0,#0 ;IS IT A COMPLETE RESEQUENCE. BEQ 20$ ; ; MAKE INSERTION HOLE ; MOV TLAST,R1 ;SET UP LOOP LIMIT. SUB TPRESENT,R1 ASR R1 ASR R1 INC R1 ;R1 = ((TLAST-TPRESENT)/4)+1 ; MOV TPRESENT,R2 ;START FROM PRESENT POSITION. ; 10$: INC (R2)+ ;INCREMENT KEY IN SORT STRING. MOV (R2)+,R4 INC -4(R4) ;INCEREMENT KEY IN MAIN STRING. SOB R1,10$ ; BR 40$ ; ; COMPLETE RESEQUENCE LOOP ; 20$: MOV TLAST,R1 ;SET UP LOOP LIMIT. SUB TFIRST,R1 ASR R1 ASR R1 INC R1 ;R1 = ((TLAST-TFIRST)/4)+1 ; MOV TFIRST,R2 MOV #1,R3 ;'KEY' REGISTER. ; 30$: MOV R3,(R2)+ MOV (R2)+,R4 MOV R3,-4(R4) ;INCREMENT KEY IN MAIN STRING. INC R3 ;INCREMENT KEY. SOB R1,30$ ;RELOOP ; 40$: CALL R$UNSAVE ;UNSAVE THE REGISTERS. CLC ;SET SUCCESS 50$: RETURN ;AND RETURN. ; .END ;