00000000: 3B 20 57 4D 55 4C 20 2D 20 55 4E 53 49 47 4E 45 |; WMUL - UNSIGNE|
00000010: 44 20 31 36 20 42 49 54 20 4D 55 4C 54 49 50 4C |D 16 BIT MULTIPL|
00000020: 59 0D 20 44 45 46 20 57 4D 55 4C 20 53 59 50 4E |Y. DEF WMUL SYPN|
00000030: 54 25 20 2C 20 53 59 54 4D 50 31 25 20 2C 20 2E |T% , SYTMP1% , .|
00000040: 53 59 43 4E 54 0D 20 20 4C 44 58 20 23 31 36 0D |SYCNT. LDX #16.|
00000050: 20 20 4C 45 54 20 30 20 2D 3E 20 53 59 54 4D 50 | LET 0 -> SYTMP|
00000060: 20 2D 3E 20 53 59 54 4D 50 2B 31 0D 53 59 57 4D | -> SYTMP+1.SYWM|
00000070: 31 0D 20 20 52 4F 52 20 53 59 54 4D 50 31 2B 31 |1. ROR SYTMP1+1|
00000080: 20 3A 20 52 4F 52 20 53 59 54 4D 50 31 0D 20 20 | : ROR SYTMP1. |
00000090: 42 43 43 20 53 59 57 4D 32 0D 20 20 4C 45 54 20 |BCC SYWM2. LET |
000000A0: 53 59 54 4D 50 20 3D 20 53 59 54 4D 50 20 2B 20 |SYTMP = SYTMP + |
000000B0: 53 59 50 4E 54 0D 20 20 4C 44 41 20 53 59 54 4D |SYPNT. LDA SYTM|
000000C0: 50 2B 31 20 3A 20 41 44 43 20 53 59 50 4E 54 2B |P+1 : ADC SYPNT+|
000000D0: 31 20 3A 20 53 54 41 20 53 59 54 4D 50 2B 31 0D |1 : STA SYTMP+1.|
000000E0: 53 59 57 4D 32 20 41 53 4C 20 53 59 50 4E 54 20 |SYWM2 ASL SYPNT |
000000F0: 3A 20 52 4F 4C 20 53 59 50 4E 54 2B 31 0D 20 20 |: ROL SYPNT+1. |
00000100: 44 45 58 20 3A 20 42 4E 45 20 53 59 57 4D 31 0D |DEX : BNE SYWM1.|
00000110: 20 20 4C 45 54 20 53 59 50 4E 54 20 3D 20 53 59 | LET SYPNT = SY|
00000120: 43 4E 54 0D 20 20 4C 45 54 20 53 59 50 4E 54 2B |CNT. LET SYPNT+|
00000130: 31 20 3D 20 53 59 43 4E 54 2B 31 0D 20 20 4C 44 |1 = SYCNT+1. LD|
00000140: 59 20 23 30 20 3A 20 4C 45 54 20 28 53 59 50 4E |Y #0 : LET (SYPN|
00000150: 54 29 2C 59 20 3D 20 53 59 54 4D 50 0D 20 20 49 |T),Y = SYTMP. I|
00000160: 4E 59 20 3A 20 4C 45 54 20 28 53 59 50 4E 54 29 |NY : LET (SYPNT)|
00000170: 2C 59 20 3D 20 53 59 54 4D 50 2B 31 0D 20 20 52 |,Y = SYTMP+1. R|
00000180: 45 54 55 52 4E 0D 20 45 4E 44 44 45 46 20 57 4D |ETURN. ENDDEF WM|
00000190: 55 4C 0D 00 00 00 FD |UL..... |
; WMUL - UNSIGNED 16 BIT MULTIPLY. DEF W
MUL SYPNT% , SYTMP1% , .SYCNT. LDX #16.
LET 0 -> SYTMP -> SYTMP+1.SYWM1. ROR
SYTMP1+1 : ROR SYTMP1. BCC SYWM2. LET
SYTMP = SYTMP + SYPNT. LDA SYTMP+1 : AD
C SYPNT+1 : STA SYTMP+1.SYWM2 ASL SYPNT
: ROL SYPNT+1. DEX : BNE SYWM1. LET SY
PNT = SYCNT. LET SYPNT+1 = SYCNT+1. LD
Y #0 : LET (SYPNT),Y = SYTMP. INY : LET
(SYPNT),Y = SYTMP+1. RETURN. ENDDEF WM
UL.....
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL