
        MOV     PULSES,#250 ; Pulses desired
        MOV     A,PULSES
        MOV     B,#02H      ; We need a 1 & 0 to be a pulse
MUL8_16:
        MOV     PSW,#0
        MOV     A,X         ; Load X into accumulator
        MOV     B,YL        ; Load Y low byte into B register
        MUL     AB          ; Multiply
        MOV     Z0,A        ; Save result low byte
        PUSH    B           ; push result high byte (X * YH)
        MOV     A,X         ; Load X into accumulator
        MOV     B,YH        ; Load Y high byte into B register
        MUL     AB          ; Multiply
<b>; Warning generated "operand allocation required"
        POP     0</b>           ; Pop R0 to recall X * YL high byte

        ADD     A,R0        ; Add X * YL high byte & X * YH low byte
        MOV     Z1,A        ; save result
        CLR     A           ; Clear accumulator
        ADDC    A,B         ; A = B + carry flag
        MOV     Z2,A        ; save results
        MOV     .LOW(PULSES),A
        MOV     .HIGH(PULSES),B      
