ASMB,R,L,C * * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * * SOURCE PART NUMBER :92067-18392 * * RELOCATABLE PART NUMBER : 92067-16361 * * PROGRAMER(S) : J.M.N. * * *************************************************************** * NAM ACGBT,8 92067-16361 REV.1940 780807 * * * ACGBT IS A ROUTINE TO RETURN THE BIT POSITION OF THE NEXT * BIT WHOSE VALUE IS ZERO, SCANNING FROM BIT 0 TO BIT 15, OR * FROM BIT 15 TO BIT 0. ACGBT WILL UPDATE THE WORD, CHANGING * THE VALUE OF THE BIT FROM 0 TO 1. * * CALLING SEQUENCE: CALL ACGBT (WORD,DIREC,BITNO) * WHERE * WORD = WORD TO BE SCANNED * DIREC= DIRECTION TO SCAN, -1 MEANS 0 TO 15 * 1 MEANS 15 TO 0 * BITNO= BIT POSITION (0-15) OF BIT * = -1 IF NONE FOUND WITH VALUE 0 * * ENT ACGBT EXT .ENTR * WORD NOP DIREC NOP BITNO NOP ACGBT NOP ENTRY JSB .ENTR GET PARAMETER ADDRESSES DEF WORD LDA M16 INITIALIZE BIT COUNT STA COUNT SAVE IT LDA WORD,I GET WORD TO BE SCANNED NEXT LDB DIREC,I GET DIRECTION TO SCAN SSB,RSS SCAN 0 TO 15? JMP *+3 NO, SO GET NEXT BIT FROM HIGH END ERA YES, GET NEXT BIT FROM LOW END RSS ELA SEZ,RSS BIT=0? JMP FOUND YES, FOUND A FREE BIT ISZ COUNT NO, INCREMENT BIT COUNT JMP NEXT CONTINUE WITH NEXT BIT CCA DONE WITH ALL 16 BITS, NONE FOUND STA BITNO,I RETURN NONE FOUND JMP ACGBT,I * FOUND LDB COUNT GET BIT COUNT ADB .16 COMPUTE NUMBER OF SHIFTS DONE CMB AND MAKE NEGATIVE STB CNT2 SAVE IT TO REVERSE THE SHIFTS LDB DIREC,I GET DIRECTION CCE SET THE BIT TO 1 SHIFT SSB,RSS IF SCANNED 15 TO 0, THEN JMP *+3 REVERSE SHIFT BY MOVING E TO HIGH END ELA ELSE REVERSE BY MOVING E TO LOW END RSS ERA ISZ CNT2 CONTINUE REVERSE SHIFT JMP SHIFT STA WORD,I RETURN UPDATED WORD * LDA COUNT GET BIT COUNT LDB DIREC,I GET DIRECTION SSB,RSS IF SCANNED 15 TO 0, THEN CMA,RSS MAKE COUNT POSITIVE TO GET BIT POSITION ADA .16 ELSE ADD 16 TO GET BIT POSITION STA BITNO,I RETURN BIT POSITION (0-15) JMP ACGBT,I RETURN * M16 DEC -16 .16 DEC 16 COUNT NOP CNT2 NOP END