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           <RETURN>
*     (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 
                                                                                  