.GLOBL IBIT ; SUBROUTINE CONVERTS 256 12 BIT WORDS IN BUFF TO 256 ; 16 BIT WORDS IN TEMP WITH 16 WORDS=MASK EVERY OTHER ; 48 16 BIT WORDS IBIT: TST (R5)+ MOV (R5)+,INDEX+2 ;POINTS TO BUFF MOV (R5)+,R2 ;POINTS TO TEMP MOV @(R5)+,MASK ;MASK CLR R3 CLR N CLR COUNT ; PUT FIRST WORD FROM TEMP INTO AWORD START: JSR PC,INDEX MOV R1,AWORD TST (R3)+ ;INC SUBSCRIPT ASL AWORD ASL AWORD ASL AWORD ASL AWORD ;AWORD=(12 BITS,0000) JSR PC,INDEX MOV R1,BWORD TST (R3)+ MOV BWORD,X ;SAVE BWORD SWAB BWORD ;GET REQUIRED 4 BITS IN M.S.B BIC #177760,BWORD ;CLEAR ALL BITS EXCEPT L.S.4.BITS BIS AWORD,BWORD ;FIRST OUTPUT WORD 16 BITS SWAB BWORD ;? MOV BWORD,(R2)+ ;OUTPUT TO TEMP SWAB X ;PUT BYTE WE WANT IN M.S.BYTE BIC #377,X ;CLEAR BOTTOM BYTE JSR PC,INDEX MOV R1,AWORD TST (R3)+ ASL AWORD ASL AWORD ASL AWORD ASL AWORD ;AWORD=(12 BITS,0000) MOV AWORD,T ;SAVE AWORD SWAB AWORD ;AWORD=(4,0000,8BITS) BIC #177400,AWORD ;CLEAR TOP WORD BIS X,AWORD ;.OR. BYTES TOGETHER SWAB AWORD MOV AWORD,(R2)+ JSR PC,INDEX MOV R1,AWORD TST (R3)+ SWAB T ;T=(4 BITS,0000,8 BITS) BIC #007777,T ;T=(4BITS,00000000000) BIS T,AWORD ;.OR. THEM TOGETHER SWAB AWORD MOV AWORD,(R2)+ ; ;HAVE NOW CHANGED FIRST 4 12 BITS INTO 3 16 BIT WORDS ADD #1,N ;INC COUNT CMP #20,N BNE AGAIN ; NOW SET THE NEXT "20 16 BIT WORDS CLR M CLEAR: MOV MASK,(R2)+ ;SET WORD TO MASK ADD #1,M CMP #20,M BNE CLEAR ;DO NEXT WORD CLR N INC COUNT CMP #4,COUNT BNE AGAIN RTS PC INDEX: MOV 0(R3),R1 RTS PC AGAIN: JMP START AWORD: .WORD 0 BWORD: .WORD 0 COUNT: .WORD 0 X: .WORD 0 T: .WORD 0 N: .WORD 0 M: .WORD 0 MASK: .WORD 0 .END