ASMB,R,Q,C
*     NAME:   .MBT
*     SOURCE: 92071-18227 
*     RELOC:  92071-1X227 
*     PGMR:   EJW,HLC 
* 
* 
*  **************************************************************** 
*  * (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 .MBT,6  92071-1X227  REV.2041  800729 
      ENT .MBT
      EXT .ZPRV 
* 
A     EQU 0 
B     EQU 1 
* 
* 
*  MOVE BYTES ROUTINE 
* 
*     (A) = SOURCE ADDRESS
*     (B) = DESTINATION ADDRESS 
*     P             JSB .MBT
*     P+1           DEF N BYTE COUNT
*     P+2           NOP       TEMP FOR .MBT 
*     P+3           <RETURN>
*     (A) = ADDR+1 OF LAST SOURCE BYTE
*     (B) = ADDR+1 OF LAST DESTINATION WORD 
* 
.MBT  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 .MBT,I    GET ADDR OF COUNT 
      ISZ .MBT
      LDA A,I       GET BYTE COUNT
      CMA,INA,SZA,RSS 
      JMP RMBT      EXIT IF COUNT=0 
      STA .MBT,I     ELSE SAVE NEGATIVE COUNT 
* 
MBTL  LDB .A.        GET SOURCE ADDR
      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 =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 ANDSHIFT 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 .MBT,I    INCREMENT THE COUNT 
      JMP MBTL      MOVE SOME MORE IF NOT DONE. 
* 
RMBT  ISZ .MBT      INCREMENT RETURN ADDR 
      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 .MBT,I    RETURN
      DEF .MBT
* 
CHAR  NOP 
.A.   NOP 
.B.   NOP 
.EO.  NOP 
* 
      END 
                            