/GENERALIZED ABODIZATION FUNCTION /E.A. BARNHARDT, 30 SEPTEMBER 1971 /FOR DATA OF LENGHT 2^N, THAT IS 1024, 512, 256, ETC /RUNNING TIME , 100 MICROSEC TIMES DATA LENGTH /DATA RESTORED TO ORIGINAL LOCATION. /CALL WITH NUMBER OF DATA POINTS IN AC AND ADDRESS /OF FIRST POINT IN CALL+1, RETURN IS TO CALL+2 /PROGRAM OCCUPIES 115(8) LOCATIONS *4600 ABOD, 0 DCA PTS /NUMBER OF DATA POINTS (8) TAD I ABOD DCA ADD1 /ADDRESS OF FIRST DATUM ISZ ABOD /SET RETURN TO CALL +2 TAD PTS RTR RTR DCA TEMP2 /LENGTH OF ONE DATA BLOCK TAD TEMP2 CIA DCA CNTR3 /MINUS BLOCK LENGTH TAD PTS TAD CNTR3 TAD CNTR3 CIA DCA CNTR4 /ACTUAL # OF POINTS TO BE SHIFTED TAD PTS RAR TAD ADD1 TAD TEMP2 DCA ADD2 /ADDRESS OF 2ND BLOCK OF 2ND HALF TAD M7 DCA CNTR0 /MINUS 7, MINUS 6, MINUS 5, ... LOOP1, TAD CNTR3 DCA CNTR5 SLOOP1, TAD I ADD1 /GET DATUM JMS SBSB /SHIFT DCA I ADD1 /DEPOSIT SHIFTED DATUM ISZ ADD1 /UPDATE ADDRESS ISZ CNTR4 /ALL COMPLETE? ISZ CNTR3 /NO, BLOCK COMPLETE? JMP SLOOP1 /NO, GET NEXT DATUM ISZ CNTR0 /YES, REDUCE SHIFT OR GO TO 2ND HALF JMP LOOP1 /DO NEXT BLOCK CLA CLL /SECOND HALF INITIALIZATION IAC CIA DCA CNTR0 /MINUS 1, MINUS 2, MINUS 3, ... LOOP2, TAD CNTR3 DCA CNTR5 SLOOP2, TAD I ADD2 /GET DATUM JMS SBSB /SHIFT DCA I ADD2 /DEPOSIT SHIFTED DATUM ISZ ADD2 /UPDATE ADDRESS ISZ CNTR4 /ALL COMPLETE? JMP SKIP /NO, SKIP JMP I ABOD /YES, RETURN SKIP, ISZ CNTR5 /BLOCK COMPLETE? JMP SLOOP2 /NO, GET NEXT DATUM TAD CNTR0 /YES, INITIALIZE FOR NEXT BLOCK CIA JMP LOOP2 SBSB, 0 /SHIFT SUB. (MODIFIED DEC-08-FMJA-D) DCA TEMP1 /STORE NUMBER TAD CNTR0 /GET SHIFT COUNTER DCA CNT /STORE FOR LOCAL USE TAD TEMP1 LOOP3, CLL SPA CML RAR ISZ CNT JMP LOOP3 JMP I SBSB TEMP1, 0 TEMP2, 0 CNTR0, 0 CNTR1, 0 CNTR2, 0 CNTR3, 0 CNTR4, 0 CNTR5, 0 ADD1, 0 ADD2, 0 PTS, 0 M7, 7771 CNT, 0 $