*``````````````````````````````*
* MULT8 : 8BIT MULTIPLY (16BR) *
*-                            -*
* MULTIPLY TWO 8BIT NUMBERS TO *
* GET  16BIT RESULT. NUMBERS   *
* MUST BE UNSIGNED.            *
*                              *
* ORIGINAL AUTHOR IS WHITE     *
* FLAME, AS SHARED ON          *
* CODEBASE64. I HAVE MADE SOME *
* MINOR ALTERATIONS, BUT NOT   *
* NEARLY ENOUGH TO CALL IT MY  *
* OWN.                         *
*-                            -*
* CLOBBERS:                    *
*                              *
* FLAGS:  ????----  REG: AXYM  *
*-                            -*
* CYCLES: ???                  *
* SIZE:                        *
*-                            -*
* USAGE:                       *
*                              *
*  LDA  #100                   *
*  PHA                         *
*  PDA #200                    *
*  PHA                         *
*  JSR MUL8                    *
*-                            -*
* ENTRY                        *
*                              *
* LOW BYTE OF RETURN ADDRESS   *
* HIGH BYTE OF RETURN ADDRESS  *
* SECOND NUM TO BE MULTIPLIED  *
* FIRST NUM TO BE MULTIPLIED   *
*-                            -*
* EXIT                         *
*                              *
* .Y = LOW BYTE OF PRODUCT     *
* .X = HI BYTE OF PRODUCT      *
* .A = PRODUCT LENGTH (2)      *
*                              *
* [RETURN] = PRODUCT           *
* [RETLEN] = 2 (PRODUCT LEN)   *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
MULT8
*
** GET RETURN ADDRESS
*
         PLA
         STA   RETADR
         PLA
         STA   RETADR+1
*
** GET PARAMETERS
*
         PLA
         STA   :MUL1
         PLA
         STA   :MUL2
*
** INIT
*
         LDA   #$00
         TAY
         TAX
         STY   :MUL1H
         BEQ   :GOLOOP
*
:DOADD
         CLC
         ADC   :MUL1
         TAY
*
         TXA
         ADC   :MUL1H
         TAX
         TYA
*
:LP
         ASL   :MUL1
         ROL   :MUL1H
:GOLOOP
         LSR   :MUL2
         BCS   :DOADD
         BNE   :LP
*
** RESTORE RETURN ADDRESS
*
         LDA   RETADR+1
         PHA
         LDA   RETADR
         PHA
*
         STY   RETURN
         STX   RETURN+1
         LDA   #2
         STA   RETLEN
*
         RTS
*
** DATA
*
:MUL1    DS    1
:MUL2    DS    1
:MUL1H   DS    1
*
