view lib/alib/mult16x16.as @ 3140:03b580a02945

Allow CoCo3FPGA-specific build of superdesc.asm Added new conditional CC3FPGA and code to "level1/modules/superdesc.asm" to reflect changes needed to build the new SD card descriptors for the Coco3FPGA.
author Bill Pierce <merlinious999@gmail.com>
date Sat, 04 Feb 2017 11:06:26 +0100
parents 03f26e88b809
children
line wrap: on
line source

************************************

* 16 x 16 Multiply

* ENTRY: D = multiplier
*        X = multiplicand

*  EXIT: Y = product 2 msbs
*        U =    "    2 lsbs
*        D & X preserved

 nam 16x16 bit Multiply
 ttl Assembler Library Module


 section .text

MULT16:
 PSHS D,X,Y,U save #s and make stack room
 CLR 4,S reset overflow flag
 LDA 3,S get byte
 MUL
 STD 6,S save B x Xl
 LDD 1,S
 MUL B x Xh
 ADDB 6,S
 ADCA #0
 STD 5,S add 1st 2 mult.
 LDB 0,S
 LDA 3,S
 MUL A x Xl
 ADDD 5,S
 STD 5,S add result to previous
 BCC no.ov branch if no overflow
 INC 4,S set overflow flag

no.ov
 LDA 0,S
 LDB 2,S
 MUL A x Xh
 ADDD 4,S
 STD 4,S
 PULS D,X,Y,U,PC return

 endsect