ASMB,R,Q,C
*     NAME:   .MBF
*     SOURCE: 
*     RELOC:
*     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 .MBF,6 92071-1X323 REV.2041 800730
      ENT .MBF
      EXT .ZPRV,.XLA,.X.
* 
A     EQU 0 
B     EQU 1 
* 
* 
*  MOVE BYTES ROUTINE 
* 
*     (A) = SOURCE ADDRESS
*     (B) = DESTINATION ADDRESS 
*     (X) = BYTE COUNT
*     P             JSB .MBF
*     P+1           <RETURN>
*     (A) = ADDR+1 OF LAST SOURCE BYTE
*     (B) = ADDR+1 OF LAST DESTINATION WORD 
*     (X) = 0 
* 
.MBF  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
      LDA B,I       GET WORD AND SHIFT ACCORDING TO 
      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 
      STA B,I       SAVE NEW WORD 
      ELB           RESTORE BYTE ADDR 
      INB            INCREMENT TO NEXT BYTE ADDR
      STB .B.        SAVE NEW DESTINATION ADDR
      ISZ .X.       DECREMENT THE COUNT 
      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 .MBF,I    RETURN
      DEF .MBF
* 
CHAR  NOP 
.A.   NOP 
.B.   NOP 
.EO.  NOP 
* 
      END 
                                                                                                                                                                                      