ASMB,R,Q,C * NAME: .MBW * SOURCE: 92071-18325 * RELOC: 92071-16325 * PGMR: DJN * * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. 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. * * **************************************************************** * * NAM .MBW,6 92071-1X325 REV.2041 800730 ENT .MBW EXT .ZPRV,.XLA,.X.,.XST * A EQU 0 B EQU 1 * * MOVE BYTES ROUTINE * * (A) = SOURCE ADDRESS * (B) = DESTINATION ADDRESS * (X) = BYTE COUNT (USE .X. AS INDEX REGISTER) * P JSB .MBW * P+1 * (A) = ADDR+1 OF LAST SOURCE BYTE * (B) = ADDR+1 OF LAST DESTINATION WORD * (X) = 0 * .MBW NOP JSB .ZPRV SHARABLE ROUTINE DEF EXIT DST .A. SAVE A,B REGS ERA,ALS SAVE E,O REGS SOC C INA STA .EO. * LDA .X. GET BYTE COUNT CMA,INA,SZA,RSS JMP RMBT EXIT IF COUNT=0 STA .X. RESTORE NEGATIVE FOR ISZ * MBTL LDB .A. GET SOURCE ADDR CLE,ERB SET (B) TO WORD ADDR JSB .XLA GET WORD AND SHIFT ACCORDING TO DEF B,I SEZ,RSS (E) CONTAINING EVEN/ODD POSITION ALF,ALF IT WAS EVEN. AND =B377 KEEP BYTE ELB RESTORE BYTE ADDR INB INCREMENT TO NEXT BYTE ADDR STB .A. SAVE NEW SOURCE ADDR * * LDB .B. GET DESTINATION ADDR STA CHAR SAVE NEW BYTE TEMPORARILY CLE,ERB SET (B) TO WORD ADDR JSB .XLA GET WORD AND SHIFT ACCORDING TO DEF B,I SEZ,RSS (E) CONTAINING EVEN/ODD POSITION ALF,ALF IT WAS EVEN. AND =B177400 KEEP HALF WHICH IS STAYING IOR CHAR FILL IN NEW BYTE SEZ,RSS ALF,ALF SHIFT IF NEEDED JSB .XST SAVE NEW WORD DEF B,I ELB RESTORE BYTE ADDR INB INCREMENT TO NEXT BYTE ADDR STB .B. SAVE NEW DESTINATION ADDR ISZ .X. INCRIMENT COUNT, SKIP IF DONE JMP MBTL MOVE SOME MORE IF NOT DONE. * RMBT LDA .EO. RESTORE E,O REGS CLO CLEAR FOR RESTORE SLA,ELA STO DLD .A. SET NEW BYTE ADDRS IN A,B REGS EXIT JMP .MBW,I RETURN DEF .MBW * CHAR NOP .A. NOP .B. NOP .EO. NOP * END