home *** CD-ROM | disk | FTP | other *** search
/ Esprit de Apple Corps / EDAC-2.iso / Graphics / Apps / Demos / GSMovie.Apr94 / Multiply.asm < prev    next >
Assembly Source File  |  1994-05-05  |  68KB  |  3,962 lines

  1.         mcopy    mult.macros
  2.         keep multiply2
  3.  
  4. ***************************************************************
  5. * Copyright 1993 - 1994
  6. * Kenneth C. Richardson
  7. * 1011 New Hope Street - 29B
  8. * Norristown, PA 19401
  9. ***************************************************************
  10. * You may use the following routines in your program but you
  11. * must state that you are using the routines in your program.
  12. * ie  This program contains routines written by
  13. *     Kenneth C. Richardson - Copyright 1993 - 1994 
  14. *This routine also uses 6 Orca Macros so give credit to
  15. *ByteWorks as well.
  16. ***************************************************************
  17.  
  18. ***************************************************************
  19. * C INTEGER SUBROUTINES IN THIS FILE - untested!!
  20. ***************************************************************
  21. *
  22. *    Multiply16to16
  23. *    - unsigned multiply with NO error checking
  24. *    - use this routine only if you know what you are doing
  25. *
  26. *    result parameter
  27. *        result    - word size multiplication result
  28. *    input parameters
  29. *        word2    - second word to be multiplied
  30. *        word1    - first word to be multiplied
  31. *
  32. ***************************************************************
  33. *
  34. *    Multiply16to16Check
  35. *    - unsigned multiply with pinning of overflow values
  36. *    - this routine is slightly slower than the one above
  37. *
  38. *    result parameter
  39. *        result    - word size multiplication result
  40. *    input parameters
  41. *        word2    - second word to be multiplied
  42. *        word1    - first word to be multiplied
  43. *
  44. ***************************************************************
  45. *
  46. *    Multiply16to32
  47. *    - unsigned multiply
  48. *
  49. *    result parameter
  50. *        result    - multiplication result
  51. *            - pull high order word first
  52. *    input parameters
  53. *        word2    - second word to be multiplied
  54. *        word1    - first word to be multiplied
  55. *
  56. ***************************************************************
  57. *
  58. *    Multiply32to64
  59. *    - unsigned 32 bit by 32 bit multiply with 64 bit result
  60. *                          
  61. *    result parameter
  62. *        result    - multiplication result            
  63. *            - pull high order words first
  64. *    input parameters
  65. *        longword2    - second word to be multiplied
  66. *                - push low order word first
  67. *        longword1    - first word to be multiplied
  68. *                - push low order word first
  69. *
  70. ***************************************************************
  71. *
  72. *    MultiArray16to16
  73. *    - this routine multiplies the number of array elements
  74. *      specified by the fourth parameter
  75. *
  76. *     input parameters
  77. *
  78. *        ResultArrayPtr        LongWord Pointer
  79. *        Input2ArrayPtr        LongWord Pointer
  80. *        Input1ArrayPtr        Longword Pointer
  81. *        Values to Multiply        Word
  82. *        - number of array elements to be multiplied
  83. *    no result Parameters
  84. *
  85. ***************************************************************
  86. *
  87. *    MultiArray16to16Check
  88. *    - this routine multiplies the number of array elements
  89. *      specified by the fourth parameter
  90. *    - this routine adds overflow checking to the above routine
  91. *
  92. *     input parameters
  93. *
  94. *        ResultArrayPtr        LongWord Pointer
  95. *        Input2ArrayPtr        LongWord Pointer
  96. *        Input1ArrayPtr        Longword Pointer
  97. *        Values to Multiply    Word
  98. *        - number of array elements to be multiplied
  99. *    no result Parameters
  100. *
  101. ***************************************************************
  102. *
  103. *    MultiArray16to32
  104. *
  105. *    input parameters
  106. *        ResultArrayPtr        LongWord
  107. *        Input2ArrayPtr        Longword
  108. *        Input1ArrayPtr        LongWord
  109. *        Values to Multiply        Word
  110. *    No Output Parameters
  111. *
  112. ***************************************************************
  113. * Assembly Language Entry Points
  114. *
  115. ***************************************************************
  116. *
  117. * MultiplyByTable    entry
  118. * - the A register contains the larger multiplier
  119. * - the X register contains the other multiplier times 2 for
  120. *   the jump table
  121. * - then perform a JSR (MultiplyByTable,x) instruction
  122. * - the result will return in the accumulator
  123. ***************************************************************
  124. *
  125. * MultiplyBy    entry
  126. *        ldx    NumberPer1b    ;direct page address
  127. *        jmp    (MultiplyByTable,x)
  128. *
  129. * MultiplyBy2    entry
  130. *         ldx    NumberPer2b    ;direct page address
  131. *        jmp    (MultiplyByTable,x)
  132. *
  133. *
  134. ***************************************************************
  135. *
  136.                                                     
  137. Multiply16to16    start
  138.  
  139. ShiftValue1    equ    $00
  140. ShiftValue2    equ    $02
  141. ShiftValue3    equ    $04
  142. ; set up new direct page
  143.         phd        ;save original DP
  144.         tsc
  145.         sec
  146.         sbc    #$08
  147.         tcd        ;set up new direct page
  148.  
  149.         lda    ShiftValue1
  150.         cpa    ShiftValue2
  151.         bcs    SV1Higher    ;When ShiftVal1>ShiftValue2 then
  152. ;                ;    ShiftValue1 stays in the A reg
  153.         asl    A    ;ShiftValue1 still in register
  154.         tax
  155.         ldx    ShiftValue1
  156.         jsr    (MultiplyTable,x)
  157.         bra    Finish16By16
  158.  
  159. SV1Higher    anop
  160.         lda    ShiftValue2
  161.         asl    A
  162.         tax
  163.         lda    ShiftValue1
  164.         jsr    (MultiplyTable,x)
  165. Finish16by16    anop
  166.         sta    ShiftValue3
  167. MovePointersEtc    anop
  168.         tsc
  169.         tcd
  170.         lda    $04
  171.         sta    $08
  172.         lda    $02
  173.         sta    $06
  174.         lda    $00
  175.         sta    $04    ;move return address
  176.         tsc        ;only result remains on stack
  177.         clc
  178.         adc    #$04
  179.         tcs
  180.         pld        ;restore original direct page
  181.         rtl
  182.  
  183.         END        ;End Multiply16by16
  184. ***********************************************
  185.  
  186. Multiply16to16Check    start
  187.  
  188. ShiftValue1    equ    $00
  189. ShiftValue2    equ    $02
  190. ShiftValue3    equ    $04
  191. ; set up new direct page
  192.         phd        ;save original DP
  193.         tsc
  194.         sec
  195.         sbc    #$08
  196.         tcd        ;set up new direct page
  197.  
  198.         lda    ShiftValue1
  199.         cpa    ShiftValue2
  200.         bcs    SV1Higher    ;When ShiftVal1>ShiftValue2 then
  201. ;                ;    ShiftValue1 goes in the X reg
  202. ;                ;    reverse of non checking code
  203.         cmp    #256    ;if SV2>SV1>256 then certain overflow
  204.         bcs    OverFlow16
  205.         lda    ShiftValue2
  206.         asl    A    ;ShiftValue1 still in register
  207.         tax
  208.         cmp    #$03
  209.         bcs    DoNotUseTable
  210.         lda    ShiftValue1
  211.         cpa    >OverFlowTable,x    ;contains min overflow values
  212.  
  213.         bcs    OverFlow16
  214. DoNotUseTable    anop
  215.         jsr    (MultiplyTable,x)
  216.         bra    Finish16by16
  217.  
  218. OverFlow16    anop
  219.         lda    #$ffff
  220.         sta    ShiftValue3
  221.         sec            ;set for error checking
  222.         brl    Finish16by16
  223.  
  224. SV1Higher    anop
  225.         lda    ShiftValue2
  226.         cmp    #256
  227.         bcs    OverFlow16
  228.         asl    A
  229.         tax
  230.         bcs    DoNotUseTable2
  231.         lda    ShiftValue1
  232.         cmp    >OverFlowTable,x    ;contains min values overflow 
  233.         bcs    OverFlow16
  234.         lda    ShiftValue1
  235.         cmp    #256
  236.         bcs    OverFlow16
  237. DoNotUseTable2    anop
  238.         jsr    (MultiplyTable,x)
  239. Finish16by16    anop
  240.         clc        ;no overflow error in multiplication
  241.         sta    ShiftValue3
  242.  
  243. MovePointersEtc    anop
  244.         tsc
  245.         tcd
  246.         lda    $04
  247.         sta    $08
  248.         lda    $02
  249.         sta    $06
  250.         lda    $00
  251.         sta    $04    ;move return address
  252.         tsc        ;only result remains on stack
  253.         clc
  254.         adc    #$04
  255.         tcs
  256.         pld        ;restore original direct page
  257.         rtl
  258.  
  259.         END        ;finished Multiply16by16 with overflow
  260. ;                    checking
  261. ***********************************************
  262.  
  263.  
  264. Multiply16to32    start
  265.  
  266. ShiftValue1    equ    $00    ;work space for 8 by 8 mulitply
  267. ShiftValue2    equ    $02    ;work space for 8 by 8 mulitply
  268. ShiftValue3    equ    $04    ;work space for 8 by 8 mulitply
  269. ShiftValue4    equ    $06    ;stores fast multiply return address
  270. ShiftValue5    equ    $08    ;stores part of old direct page
  271. ShiftValue6    equ    $0a    ;stores part of above and return address
  272. ShiftValue7    equ    $0c    ;stores rest of return address
  273. ShiftValue8    equ    $0e    ;Input Parameter1
  274. ShiftValue9    equ    $10    ;Input Parameter2
  275. ShiftValue10    equ    $12    ;Low Word of Result
  276. ShiftValue11    equ    $14    ;High Word of Result
  277.  
  278. ; set up new direct page
  279.         phd        ;save original DP
  280.         tsc
  281.         sec
  282.         sbc    #$06    ;added work space SV1,SV2,SV3
  283.         tcd        ;set up new direct page
  284.  
  285.         lda    ShiftValue8
  286.         and    #$00ff
  287.         asl    A        
  288. ;DO NOT bother to check for zero condition
  289. ;  because jsr (multiplytable,x) is fast enough
  290. ;  with a lda #$0000, & rts as the whole subroutine
  291. ;Why speed up one possibility when you slow
  292. ;  down the other 255?
  293.         tax
  294.         lda    ShiftValue9    
  295.         and    #$00ff    
  296.         jsr    (MultiplyTable,x)
  297.         sta    ShiftValue10
  298.  
  299.         lda    ShiftValue8
  300.         xba
  301.         and    #$00ff
  302.         asl    A
  303.         tax
  304.         lda    ShiftValue9
  305.         xba
  306.         and    #$00ff
  307.         jsr    (MultiplyTable,x)
  308.         sta    ShiftValue9
  309.  
  310.         lda    ShiftValue8
  311.         and    #$00ff
  312.         asl    A
  313.         tax
  314.         lda    ShiftValue9
  315.         xba
  316.         and    #$00ff
  317.         jsr    (MultiplyTable,x)
  318.         xba
  319.         tax
  320.         and    #$ff00
  321.         clc
  322.         adc    ShiftValue11
  323.         sta    ShiftValue11
  324.         txa
  325.         and    #$00ff
  326.         clc
  327.         adc    ShiftValue10
  328.         sta    ShiftValue10
  329.  
  330.         lda    ShiftValue8
  331.         xba
  332.         and    #$00ff
  333.         asl    A
  334.         tax
  335.         lda    ShiftValue9
  336.         and    #$00ff
  337.         jsr    (MultiplyTable,x)
  338.         xba
  339.         tax
  340.         and    #$ff00
  341.         clc
  342.         adc    ShiftValue11
  343.         sta    ShiftValue11
  344.         txa
  345.         and    #$00ff
  346.         clc
  347.         adc    ShiftValue10
  348.         sta    ShiftValue10
  349.  
  350.         lda    ShiftValue7
  351.         sta    ShiftValue9
  352.         lda    ShiftValue6
  353.         sta    ShiftValue8
  354.         lda    ShiftValue5
  355.         sta    ShiftValue7    ;move return address and original DP
  356.         tsc        ;only result remains on stack
  357.         clc
  358.         adc    #$04    ;move by number of input param bytes
  359.         tcs        ;store new stack pointer
  360.         pld        ;restore original direct page
  361.         rtl        ;end subroutine
  362.  
  363.         END
  364.  
  365. ***********************************************
  366. Multiply32to64    start
  367.  
  368. Storage8a10a    equ    $00    ;storage for later additions
  369. Storage8a10b    equ    $02
  370. Storage8a11a    equ    $04
  371. Storage8a11b    equ    $06
  372. Storage8b10a    equ    $08
  373. Storage8b10b    equ    $0a
  374. Storage8b11a    equ    $0c
  375. Storage8b11b    equ    $0e
  376. Storage9a10a    equ    $10
  377. Storage9a10b    equ    $12
  378. Storage9a11a    equ    $14
  379. Storage9a11b    equ    $16
  380. Storage9b10a    equ    $18
  381. Storage9b10b    equ    $1a
  382. Storage9b11a    equ    $1c
  383. Storage9b11b    equ    $1e    ;storage for later additions
  384.         
  385. ShiftValue1    equ    $20    ;for 0 through 256 multiply table
  386. ShiftValue2    equ    $22    ;    for 0 through 256 multiply table
  387. ShiftValue3    equ    $24    ;    for 0 through 256 multiply table
  388. ShiftValue4    equ    $26    ;reserved for fast multiply return address 
  389. ShiftValue5    equ    $28    ;    reserved for return address
  390. ShiftValue6    equ    $2a    ;    reserved for return address
  391. ShiftValue7    equ    $2c    ;    reserved for return address
  392. ShiftValue8    equ    $2e    ;low order word of 1st input parameter
  393. ShiftValue9    equ    $30    ;    high order word of 1st input parameter
  394. ShiftValue10    equ    $32    ;low order word of 2nd input parameter
  395. ShiftValue11    equ    $34    ;    high order word of 2nd input parameter
  396. ShiftValue12    equ    $36    ;lowest order word of result
  397. ShiftValue13    equ    $38    ;    low-middle word of result
  398. ShiftValue14    equ    $3a    ;    high-middle word of result
  399. ShiftValue15    equ    $3c    ;    high order word of result
  400.  
  401. ; set up new direct page
  402.         phd        ;save original DP
  403.         tsc
  404.         sec
  405.         sbc    #$28    ;add work space for storage vals,& rts
  406.         tcd        ;set up new direct page
  407.  
  408.         lda    ShiftValue8
  409.         and    #$00ff    ;highest order byte
  410.         asl    A
  411.         tax
  412.         tay        ;store for next multiplies
  413.         lda    ShiftValue10
  414.         and    #$00ff    ;highest order byte
  415.         jsr    (MultiplyTable,x)
  416.         sta    Storage8a10a
  417.  
  418.         tyx        ;retrieve stored value - low byte of ShiftValue8
  419.         lda    ShiftValue10
  420.         xba
  421.         and    #$00ff    ;high order byte
  422.         jsr    (MultiplyTable,x)
  423.         sta    Storage8a10b
  424.  
  425.         tyx        ;retrieve stored value - low byte of ShiftValue8
  426.         lda    ShiftValue11
  427.         and    #$00ff    ;high order byte
  428.         jsr    (MultiplyTable,x)
  429.         sta    Storage8a11a
  430.  
  431.         tyx        ;retrieve stored value - low byte of ShiftValue8
  432.         lda    ShiftValue11
  433.         xba
  434.         and    #$00ff    ;high order byte
  435.         jsr    (MultiplyTable,x)
  436.         sta    Storage8a11b
  437. ***********
  438.         lda    ShiftValue8
  439.         xba
  440.         and    #$00ff    ;highest order byte
  441.         asl    A
  442.         tax
  443.         tay        ;store for next multiplies
  444.         lda    ShiftValue10
  445.         and    #$00ff    ;highest order byte
  446.         jsr    (MultiplyTable,x)
  447.         sta    Storage8b10a
  448.  
  449.         tyx        ;retrieve stored value - low byte of ShiftValue8
  450.         lda    ShiftValue10
  451.         xba
  452.         and    #$00ff    ;high order byte
  453.         jsr    (MultiplyTable,x)
  454.         sta    Storage8b10b
  455.  
  456.         tyx        ;retrieve stored value - low byte of ShiftValue8
  457.         lda    ShiftValue11
  458.         and    #$00ff    ;high order byte
  459.         jsr    (MultiplyTable,x)
  460.         sta    Storage8b11a
  461.  
  462.         tyx        ;retrieve stored value - low byte of ShiftValue8
  463.         lda    ShiftValue11
  464.         xba
  465.         and    #$00ff    ;high order byte
  466.         jsr    (MultiplyTable,x)
  467.         sta    Storage8b11b
  468. ***********
  469.         lda    ShiftValue9
  470.         and    #$00ff    ;highest order byte
  471.         asl    A
  472.         tax
  473.         tay        ;store for next multiplies
  474.         lda    ShiftValue10
  475.         and    #$00ff    ;highest order byte
  476.         jsr    (MultiplyTable,x)
  477.         sta    Storage9a10a
  478.  
  479.         tyx        ;retrieve stored value - low byte of ShiftValue8
  480.         lda    ShiftValue10
  481.         xba
  482.         and    #$00ff    ;high order byte
  483.         jsr    (MultiplyTable,x)
  484.         sta    Storage9a10b
  485.  
  486.         tyx        ;retrieve stored value - low byte of ShiftValue8
  487.         lda    ShiftValue11
  488.         and    #$00ff    ;high order byte
  489.         jsr    (MultiplyTable,x)
  490.         sta    Storage9a11a
  491.  
  492.         tyx        ;retrieve stored value - low byte of ShiftValue8
  493.         lda    ShiftValue11
  494.         xba
  495.         and    #$00ff    ;high order byte
  496.         jsr    (MultiplyTable,x)
  497.         sta    Storage9a11b
  498. ***********
  499.         lda    ShiftValue8
  500.         xba
  501.         and    #$00ff    ;highest order byte
  502.         asl    A
  503.         tax
  504.         tay        ;store for next multiplies
  505.         lda    ShiftValue10
  506.         and    #$00ff    ;highest order byte
  507.         jsr    (MultiplyTable,x)
  508.         sta    Storage9b10a
  509.  
  510.         tyx        ;retrieve stored value - low byte of ShiftValue8
  511.         lda    ShiftValue10
  512.         xba
  513.         and    #$00ff    ;high order byte
  514.         jsr    (MultiplyTable,x)
  515.         sta    Storage9b10b
  516.  
  517.         tyx        ;retrieve stored value - low byte of ShiftValue8
  518.         lda    ShiftValue11
  519.         and    #$00ff    ;high order byte
  520.         jsr    (MultiplyTable,x)
  521.         sta    Storage9b11a
  522.  
  523.         tyx        ;retrieve stored value - low byte of ShiftValue8
  524.         lda    ShiftValue11
  525.         xba
  526.         and    #$00ff    ;high order byte
  527.         jsr    (MultiplyTable,x)
  528.         sta    Storage9b11b
  529. ***********
  530.  
  531.  
  532. ;At this point each part of the 64 bit result is determined so addition
  533. ;must now be used to combine all 16 of the multiplications
  534.  
  535. ********************************************************************
  536. *    word1        word2        word3        word4
  537. * byte#    1    2    3    4    5    6    7    8
  538. *
  539. * result position name
  540. *     |SV12        |SV13        |SV14        |SV15
  541. *    |        |        |        |
  542. * temporary storage names
  543. *    8a10a    8a10b    8a11a    8a11b
  544. *         8b10a    8b10b    8b11a    8b11b
  545. *             9a10a    9a10b    9a11a    9a11b
  546. *                9b10a    9b10b    9b11a    9b11b
  547. *    |        |        |        |
  548. *    |SV12        |SV13        |SV14        |SV15
  549. ********************************************************************
  550.  
  551.         ldx    #$0000        ;clear register to zero
  552.         lda    Storage8a10a
  553.         sta    ShiftValue12
  554.         clc
  555.         lda    Storage8a11a
  556.         adc    Storage8b10b
  557.         sta    ShiftValue13
  558.         lda    Storage8b11b
  559.         adc    Storage9a11a
  560.         sta    ShiftValue14
  561.         tax
  562.         adc    Storage9b11b
  563.         sta    ShiftValue15
  564.  
  565.         clc
  566.         lda    ShiftValue13
  567.         adc    Storage9a10a
  568.         sta    ShiftValue13
  569.  
  570.         clc
  571.         lda    ShiftValue14
  572.         adc    Storage9b10b
  573.         sta    ShiftValue14
  574.         bcc    SkipIncrement1
  575.         inc    ShiftValue15
  576.         clc
  577.  
  578. SkipIncrement1    anop
  579.         lda    ShiftValue12+1        ;offset by a byte
  580.         adc    Storage8a10b
  581.         bcc    SkipIncrement2
  582.         inc    ShiftValue13+1
  583.         clc
  584. SkipIncrement2    anop
  585.         adc    Storage8b10a
  586.         sta    ShiftValue12+1
  587.  
  588.         lda    ShiftValue13+1
  589.         adc    Storage8a11b
  590.         bcc    SkipIncrement3
  591.         inc    ShiftValue14+1
  592.         clc
  593. SkipIncrement3    anop
  594.         adc    Storage8b11a
  595.         bcc    SkipIncrement4
  596.         inc    ShiftValue14+1
  597.         clc
  598. SkipIncrement4    anop
  599.         adc    Storage9a10b
  600.         bcc    SkipIncrement5
  601.         inc    ShiftValue14+1
  602.         clc
  603. SkipIncrement5    anop
  604.         adc    Storage9b10a
  605.         sta    ShiftValue13+1
  606.  
  607.         lda    ShiftValue14+1
  608.         adc    Storage9a11b
  609.         bcc    SkipIncrement6
  610.         inc    ShiftValue15+1
  611.         clc
  612. SkipIncrement6    anop
  613.         adc    Storage9b11a
  614.         bcc    SkipIncrement7
  615.         inc    ShiftValue15+1
  616. SkipIncrement7    anop
  617.         sta    ShiftValue14+1
  618. **
  619. **    Multiplication result now in result parameter of stack
  620. **
  621.  
  622.         lda    ShiftValue7
  623.         sta    ShiftValue11
  624.         lda    ShiftValue6
  625.         sta    ShiftValue10
  626.         lda    ShiftValue5
  627.         sta    ShiftValue9    ;move return address and original DP
  628.         tsc        ;only result remains on stack
  629.         clc
  630.         adc    #$08    ;move by number of input param bytes
  631.         tcs        ;store new stack pointer
  632.         pld        ;restore original direct page
  633.         rtl        ;end subroutine
  634.  
  635.         END
  636. ***********************************************
  637.  
  638. MultiArray16to16    start
  639.  
  640. * input parameters
  641. *
  642. *    ResultArrayPtr        LongWord
  643. *    Input1ArrayPtr        Longword
  644. *    Input2ArrayPtr        LongWord
  645. *    Values to Multiply    Word
  646. * No Output Parameters
  647.  
  648. ShiftValue1    equ    $00
  649. ShiftValue2    equ    $02
  650. ShiftValue3    equ    $04
  651. NegResult    equ    $06
  652.  
  653. * $08 thru $0f reserved by stack
  654. ArraySize    equ    $10
  655. Input2ArrayPtr    equ    $12
  656. Input1ArrayPtr    equ    $16
  657. ResultArrayPtr    equ    $1a
  658.  
  659. ; set up new direct page
  660.         phd        ;save original DP
  661.         tsc
  662.         sec
  663.         sbc    #$08
  664.         tcd        ;set up new direct page
  665.  
  666.         ldy    #$0000    ;index for input and output arrays
  667. LoopStart    lda    [Input2ArrayPtr],y
  668.         sta    ShiftValue2
  669.         lda    [Input1ArrayPtr],y
  670.         sta    ShiftValue1
  671.         cpa    ShiftValue2
  672.         bcs    SV1Higher    ;When ShiftVal1>ShiftValue2 then
  673. ;                ;    ShiftValue1 stays in the A reg
  674.         asl    A    ;ShiftValue1 still in register
  675.         tax
  676.         ldx    ShiftValue1
  677.         jsr    (MultiplyTable,x)
  678.         bra    Finish16By16
  679.  
  680. SV1Higher    anop
  681.         lda    ShiftValue2
  682.         asl    A
  683.         tax
  684.         lda    ShiftValue1
  685.         jsr    (MultiplyTable,x)
  686. Finish16by16    anop
  687.         sta    [ResultArrayPtr],y
  688.         cpy    ArraySize
  689.         beq    MovePointersEtc
  690.         iny
  691.         iny
  692.         brl    LoopStart
  693. MovePointersEtc    anop
  694.         tsc
  695.         tcd
  696.         lda    $04
  697.         sta    $08
  698.         lda    $02
  699.         sta    $06
  700.         lda    $00
  701.         sta    $04    ;move return address
  702.         tsc        ;only result remains on stack
  703.         clc
  704.         adc    #$04
  705.         tcs
  706.         pld        ;restore original direct page
  707.         rtl
  708.  
  709.         END        ;End Multiply16by16
  710. ***********************************************
  711.  
  712. MultiArray16to16Check    start
  713.  
  714. * input parameters
  715. *    ResultArrayPtr        LongWord
  716. *    Input1ArrayPtr        Longword
  717. *    Input2ArrayPtr        LongWord
  718. *    Values to Multiply    Word
  719. * No Output Parameters
  720.  
  721. ShiftValue1    equ    $00
  722. ShiftValue2    equ    $02
  723. ShiftValue3    equ    $04
  724. NegResult    equ    $06
  725.  
  726. * $08 thru $0f reserved by stack
  727. ArraySize    equ    $10
  728. Input1ArrayPtr    equ    $12
  729. Input2ArrayPtr    equ    $16
  730. ResultArrayPtr    equ    $1a
  731.  
  732. ; set up new direct page
  733.         phd        ;save original DP
  734.         tsc
  735.         sec
  736.         sbc    #$08
  737.         tcd        ;set up new direct page
  738.  
  739.         ldy    #$0000    ;index for input and output arrays
  740. LoopStart    lda    [Input2ArrayPtr],y
  741.         sta    ShiftValue2
  742.         lda    [Input1ArrayPtr],y
  743.         lda    ShiftValue1
  744.         cpa    ShiftValue2
  745.         bcs    SV1Higher    ;When ShiftVal1>ShiftValue2 then
  746. ;                ;    ShiftValue1 goes in the X reg
  747. ;                ;    reverse of non checking code
  748.         cmp    #256    ;if SV2>SV1>256 then certain overflow
  749.         bcs    OverFlow16
  750.         lda    ShiftValue2
  751.         asl    A    ;ShiftValue1 still in register
  752.         tax
  753.         cmp    #$03
  754.         bcs    DoNotUseTable
  755.         lda    ShiftValue1
  756.         cpa    >OverFlowTable,x    ;contains min values overflow 
  757.         bcs    OverFlow16
  758. DoNotUseTable    anop
  759.         jsr    (MultiplyTable,x)
  760.         bra    Finish16by16
  761.  
  762. OverFlow16    anop
  763.         lda    #$ffff
  764.         sta    ShiftValue3
  765.         sec            ;set for error checking
  766.         brl    Finish16by16
  767.  
  768. SV1Higher    anop
  769.         lda    ShiftValue2
  770.         cmp    #256
  771.         bcs    OverFlow16
  772.         asl    A
  773.         tax
  774.         bcs    DoNotUseTable2
  775.         lda    ShiftValue1
  776.         cmp    >OverFlowTable,x    ;contains min values overflow 
  777.         bcs    OverFlow16
  778.         lda    ShiftValue1
  779.         cmp    #256
  780.         bcs    OverFlow16
  781. DoNotUseTable2    anop
  782.         jsr    (MultiplyTable,x)
  783. Finish16by16    anop
  784.         sta    [ResultArrayPtr],y
  785.         cpy    ArraySize
  786.         beq    MovePointersEtc
  787.         iny
  788.         iny
  789.         brl    LoopStart
  790.  
  791. MovePointersEtc    anop
  792.         tsc
  793.         tcd
  794.         lda    $04
  795.         sta    $08
  796.         lda    $02
  797.         sta    $06
  798.         lda    $00
  799.         sta    $04    ;move return address
  800.         tsc        ;only result remains on stack
  801.         clc
  802.         adc    #$04
  803.         tcs
  804.         pld        ;restore original direct page
  805.         rtl
  806.  
  807.         END        ;finished Multiply16by16 with overflow
  808. ;                    checking
  809. ***********************************************
  810.  
  811. MultiArray16to32    start
  812. * input parameters
  813. *    ResultArrayPtr        LongWord
  814. *    Input1ArrayPtr        Longword
  815. *    Input2ArrayPtr        LongWord
  816. *    Values to Multiply    Word
  817. * No Output Parameters
  818.  
  819. ResultArrayPtr    equ    $1e
  820. Input2ArrayPtr    equ    $1a
  821. Input1ArrayPtr    equ    $16
  822. ArraySize    equ    $14
  823. * $0c thru $13 reserved by stack
  824. ShiftValue10    equ    $12    ;return address
  825. ShiftValue9    equ    $10    ;return address & direct page
  826. ShiftValue8    equ    $0e    ;direct page & space for jsr (MultiplyTable,x)
  827. ShiftValue7    equ    $0c    ;space for jsr (MultiplyTable,x)
  828. NegResult    equ    $0a
  829. ResultHigh    equ    $08
  830. ResultLow    equ    $06
  831. ShiftValue3    equ    $04
  832. ShiftValue2    equ    $02
  833. ShiftValue1    equ    $00
  834.  
  835.  
  836. ; set up new direct page
  837.         ldy    #$0000    ;initialize the Y index
  838.         phd        ;save original DP
  839.         tsc
  840.         sec
  841.         sbc    #$0c    ;allocate work space from stack
  842.         tcd        ;set up new direct page
  843.  
  844. StartOfLoop    anop
  845.         lda    [Input1ArrayPtr],y
  846.         and    #$00ff
  847.         asl    A    ;DO NOT bother to check for zero condition
  848.         tax        ;  because jsr (multiplytable,x) is fast 
  849. ;                    enough
  850.         lda    [Input2ArrayPtr],y
  851.         and    #$00ff    ;Why speed up one possibility when you slow
  852. ;                ;  down the other 255?
  853.         jsr    (MultiplyTable,x)
  854.         sta    ResultLow
  855.  
  856.         lda    [Input1ArrayPtr],y
  857.         xba
  858.         and    #$00ff
  859.         asl    A
  860.         tax
  861.         lda    [Input2ArrayPtr],y
  862.         xba
  863.         and    #$00ff
  864.         jsr    (MultiplyTable,x)
  865.         sta    ResultHigh
  866.  
  867.         lda    [Input1ArrayPtr],y
  868.         and    #$00ff
  869.         asl    A
  870.         tax
  871.         lda    [Input2ArrayPtr],y
  872.         xba
  873.         and    #$00ff
  874.         jsr    (MultiplyTable,x)
  875.         clc
  876.         adc    ResultLow+1
  877.         sta    ResultLow+1
  878.         bcc    NoIncrementHere1
  879.         inc    ResultHigh+1
  880.  
  881. NoIncrementHere1    anop
  882.         lda    [Input1ArrayPtr],y
  883.         xba
  884.         and    #$00ff
  885.         asl    A
  886.         tax
  887.         lda    [Input2ArrayPtr],y
  888.         and    #$00ff
  889.         jsr    (MultiplyTable,x)
  890.         clc
  891.         adc    ResultLow+1
  892.         sta    ResultLow+1
  893.         bcc    NoIncrementHere2
  894.         inc    ResultHigh+1
  895.  
  896. NoIncrementHere2    anop
  897. ** now save the answer into the indexed address
  898.         tyx
  899.         tya
  900.         asl    A    ;result array size 2X as large as input size
  901.         tay
  902.         lda    ResultLow
  903.         sta    [ResultArrayPtr],y
  904.         iny
  905.         lda    ResultHigh
  906.         sta    [ResultArrayPtr],y
  907.  
  908.         txy        ;increment loop
  909.         iny
  910.         cpy    ArraySize
  911.         beq    EndThisLoop
  912.         brl    StartOfLoop
  913.  
  914. EndThisLoop    anop
  915. ** now remove all input parameters from stack - no result remains on stack
  916.         pld        ;restore orignal direct page
  917.  
  918.         lda    ShiftValue10
  919.         sta    ResultArrayPtr+2
  920.         lda    ShiftValue9
  921.         sta    ResultArrayPtr    ;move return address
  922.         
  923.         tsc        ;no result remains on stack
  924.         clc
  925.         adc    #$0e    ;move by number of input param bytes
  926.         tcs        ;store new stack pointer
  927.         rtl        ;end subroutine
  928.  
  929.         END
  930.  
  931. ***********************************************
  932. OverFlowChecking    start
  933.  
  934. OverFlowTable    entry
  935.         dc    i2'65535'
  936.         dc    i2'65535'
  937.         dc    i2'32768'
  938.         dc    i2'21846'
  939.         dc    i2'16384'
  940.         dc    i2'13108'
  941.         dc    i2'10923'
  942.         dc    i2'9363'
  943.         dc    i2'8192'
  944.         dc    i2'7282'
  945.         dc    i2'6554'
  946.         dc    i2'5958'
  947.         dc    i2'5462'
  948.         dc    i2'5042'
  949.         dc    i2'4682'
  950.         dc    i2'4370'
  951.         dc    i2'4096'
  952.         dc    i2'3856'
  953.         dc    i2'3641'
  954.         dc    i2'3450'
  955.         dc    i2'3277'    ;20
  956.         dc    i2'3121'
  957.         dc    i2'2979'
  958.         dc    i2'2850'
  959.         dc    i2'2731'
  960.         dc    i2'2622'    ;
  961.         dc    i2'2521'
  962.         dc    i2'2428'
  963.         dc    i2'2341'
  964.         dc    i2'2260'
  965.         dc    i2'2185'    ;30
  966.         dc    i2'2115'
  967.         dc    i2'2048'
  968.         dc    i2'1986'
  969.         dc    i2'1928'
  970.         dc    i2'1873'    ;
  971.         dc    i2'1821'
  972.         dc    i2'1772'
  973.         dc    i2'1725'
  974.         dc    i2'1681'
  975.         dc    i2'1639'    ;40
  976.         dc    i2'1599'
  977.         dc    i2'1561'
  978.         dc    i2'1525'
  979.         dc    i2'1490'
  980.         dc    i2'1457'    ;
  981.         dc    i2'1425'
  982.         dc    i2'1395'
  983.         dc    i2'1366'
  984.         dc    i2'1338'
  985.         dc    i2'1311'    ;50
  986.         dc    i2'1286'
  987.         dc    i2'1261'
  988.         dc    i2'1237'
  989.         dc    i2'1214'
  990.         dc    i2'1192'    ;55
  991.         dc    i2'1171'
  992.         dc    i2'1150'
  993.         dc    i2'1130'
  994.         dc    i2'1111'
  995.         dc    i2'1093'    ;60
  996.         dc    i2'1075'
  997.         dc    i2'1058'
  998.         dc    i2'1041'
  999.         dc    i2'1024'
  1000.         dc    i2'1009'    ;65
  1001.         dc    i2'993'
  1002.         dc    i2'979'
  1003.         dc    i2'964'
  1004.         dc    i2'950'
  1005.         dc    i2'937'    70
  1006.         dc    i2'924'
  1007.         dc    i2'911'
  1008.         dc    i2'898'
  1009.         dc    i2'886'
  1010.         dc    i2'874'    ;75
  1011.         dc    i2'863'
  1012.         dc    i2'852'
  1013.         dc    i2'841'
  1014.         dc    i2'830'
  1015.         dc    i2'820'    ;80
  1016.         dc    i2'810'
  1017.         dc    i2'800'
  1018.         dc    i2'790'
  1019.         dc    i2'781'
  1020.         dc    i2'772'    ;85
  1021.         dc    i2'763'
  1022.         dc    i2'754'
  1023.         dc    i2'745'
  1024.         dc    i2'737'
  1025.         dc    i2'729'    ;90
  1026.         dc    i2'721'
  1027.         dc    i2'713'
  1028.         dc    i2'705'
  1029.         dc    i2'698'
  1030.         dc    i2'690'    ;95
  1031.         dc    i2'683'
  1032.         dc    i2'676'
  1033.         dc    i2'669'
  1034.         dc    i2'662'
  1035.         dc    i2'656'    ;100
  1036.         dc    i2'649'
  1037.         dc    i2'643'
  1038.         dc    i2'637'
  1039.         dc    i2'631'
  1040.         dc    i2'625'    ;105
  1041.         dc    i2'619'
  1042.         dc    i2'613'
  1043.         dc    i2'607'
  1044.         dc    i2'602'
  1045.         dc    i2'596'    ;110
  1046.         dc    i2'591'
  1047.         dc    i2'586'
  1048.         dc    i2'580'
  1049.         dc    i2'575'
  1050.         dc    i2'570'    ;115
  1051.         dc    i2'565'
  1052.         dc    i2'561'
  1053.         dc    i2'556'
  1054.         dc    i2'551'
  1055.         dc    i2'547'    ;120
  1056.         dc    i2'542'
  1057.         dc    i2'538'
  1058.         dc    i2'533'
  1059.         dc    i2'529'
  1060.         dc    i2'525'    ;125
  1061.         dc    i2'521'
  1062.         dc    i2'517'
  1063.         dc    i2'512'
  1064.         dc    i2'509'
  1065.         dc    i2'505'    ;130
  1066.         dc    i2'501'
  1067.         dc    i2'497'
  1068.         dc    i2'493'
  1069.         dc    i2'490'
  1070.         dc    i2'486'    ;135
  1071.         dc    i2'482'
  1072.         dc    i2'479'
  1073.         dc    i2'475'
  1074.         dc    i2'472'
  1075.         dc    i2'469'    ;140
  1076.         dc    i2'465'
  1077.         dc    i2'462'
  1078.         dc    i2'459'
  1079.         dc    i2'456'
  1080.         dc    i2'452'    ;145
  1081.         dc    i2'449'
  1082.         dc    i2'446'
  1083.         dc    i2'443'
  1084.         dc    i2'440'
  1085.         dc    i2'437'    ;150
  1086.         dc    i2'435'
  1087.         dc    i2'432'
  1088.         dc    i2'429'
  1089.         dc    i2'426'
  1090.         dc    i2'423'    ;155
  1091.         dc    i2'421'
  1092.         dc    i2'418'
  1093.         dc    i2'415'
  1094.         dc    i2'413'
  1095.         dc    i2'410'    ;160
  1096.         dc    i2'408'
  1097.         dc    i2'405'
  1098.         dc    i2'403'
  1099.         dc    i2'400'
  1100.         dc    i2'398'    ;165
  1101.         dc    i2'395'
  1102.         dc    i2'393'
  1103.         dc    i2'391'
  1104.         dc    i2'388'
  1105.         dc    i2'386'    ;170
  1106.         dc    i2'384'
  1107.         dc    i2'382'
  1108.         dc    i2'379'
  1109.         dc    i2'377'
  1110.         dc    i2'375'    ;175
  1111.         dc    i2'373'
  1112.         dc    i2'371'
  1113.         dc    i2'369'
  1114.         dc    i2'367'
  1115.         dc    i2'365'    ;180
  1116.         dc    i2'363'
  1117.         dc    i2'361'
  1118.         dc    i2'359'
  1119.         dc    i2'357'
  1120.         dc    i2'355'    ;185
  1121.         dc    i2'353'
  1122.         dc    i2'351'
  1123.         dc    i2'349'
  1124.         dc    i2'347'
  1125.         dc    i2'345'    ;190
  1126.         dc    i2'344'
  1127.         dc    i2'342'
  1128.         dc    i2'340'
  1129.         dc    i2'338'
  1130.         dc    i2'337'    ;195
  1131.         dc    i2'335'
  1132.         dc    i2'333'
  1133.         dc    i2'331'
  1134.         dc    i2'330'
  1135.         dc    i2'328'    ;200
  1136.         dc    i2'327'
  1137.         dc    i2'325'
  1138.         dc    i2'323'
  1139.         dc    i2'322'
  1140.         dc    i2'320'    ;205
  1141.         dc    i2'319'
  1142.         dc    i2'317'
  1143.         dc    i2'316'
  1144.         dc    i2'314'
  1145.         dc    i2'313'    ;210
  1146.         dc    i2'311'
  1147.         dc    i2'310'
  1148.         dc    i2'308'
  1149.         dc    i2'307'
  1150.         dc    i2'305'    ;215
  1151.         dc    i2'304'
  1152.         dc    i2'303'
  1153.         dc    i2'301'
  1154.         dc    i2'300'
  1155.         dc    i2'298'    ;220
  1156.         dc    i2'297'
  1157.         dc    i2'296'
  1158.         dc    i2'294'
  1159.         dc    i2'293'
  1160.         dc    i2'292'    ;225
  1161.         dc    i2'290'
  1162.         dc    i2'289'
  1163.         dc    i2'288'
  1164.         dc    i2'287'
  1165.         dc    i2'285'    ;230
  1166.         dc    i2'284'
  1167.         dc    i2'283'
  1168.         dc    i2'282'
  1169.         dc    i2'281'
  1170.         dc    i2'279'    ;235
  1171.         dc    i2'278'
  1172.         dc    i2'277'
  1173.         dc    i2'276'
  1174.         dc    i2'275'
  1175.         dc    i2'274'    ;240
  1176.         dc    i2'272'
  1177.         dc    i2'271'
  1178.         dc    i2'270'
  1179.         dc    i2'269'
  1180.         dc    i2'268'    ;245
  1181.         dc    i2'267'
  1182.         dc    i2'266'
  1183.         dc    i2'265'
  1184.         dc    i2'264'
  1185.         dc    i2'263'    ;250
  1186.         dc    i2'262'
  1187.         dc    i2'261'
  1188.         dc    i2'260'
  1189.         dc    i2'259'
  1190.         dc    i2'258'    ;255
  1191.         dc    i2'256'
  1192.         dc    i2'255'
  1193.  
  1194.         END
  1195.  
  1196.  
  1197. ***********************************************
  1198. *
  1199. * Number being multiplied is in A
  1200. * Number multiplying is in X
  1201.  
  1202. MultiplySub    Start
  1203.  
  1204. * direct page equates for tween routine
  1205.  
  1206. ShiftValue1    equ    $00
  1207. ShiftValue2    equ    $02
  1208. ShiftValue3    equ    $04
  1209. ShiftValue4    equ    $06
  1210. ShiftValue5    equ    $08
  1211. ShiftValue6    equ    $0a
  1212. ShiftValue7    equ    $0c
  1213. ShiftValue8    equ    $0e
  1214.  
  1215. TempX        equ    $10    ;work space for registers X,Y, & A
  1216. TempY        equ    $12
  1217. TempA        equ    $14
  1218. TempA2        equ    $16
  1219. firstframe    equ    $18    ;for direct indirect addressing of
  1220. secondframe    equ    $1c    ; loaded frames and processed frames
  1221. processedframe    equ    $20    ;pointed to processed frame
  1222. tweenpallette    equ    $24    ;Pallette check box info from dialog
  1223. tweenSCRN    equ    $26    ;SCRN check box info from dialog
  1224. TweenNumber    equ    $28    ;number of frames to be created
  1225. SCRNSize        equ    $2a    ;length of SHR info for dex loop
  1226. PalletteSize    equ    $2c    ;length of pallette info for dex loop
  1227. NumberPer1    equ    $2e    ;percentage of first frame in picture
  1228. NumberPer2    equ    $30    ;percentage of 2nd frame in picture
  1229. FilenameLength    equ    $32
  1230. SuffixLength    equ    $34
  1231. NumberAdd1    equ    $36
  1232. NumberAdd2    equ    $38
  1233. NumberResult    equ    $3a
  1234. NumberPer1b    equ    $42
  1235. NumberPer2b    equ    $44
  1236.  
  1237. ;DO NOT USE TEMPY AS A VARIABLE IN THIS ROUTINE,
  1238. ;THE ROUTINE THAT CALLS THIS ONE USES TEMPY
  1239.  
  1240. MultiplyBy    entry
  1241.         ldx    NumberPer1b
  1242.         jmp    (MultiplyByTable,x)
  1243.  
  1244. MultiplyBy2    entry
  1245.          ldx    NumberPer2b
  1246.         jmp    (MultiplyByTable,x)
  1247.  
  1248. MultiplyByTable    entry
  1249.         dc    i2'multi0'
  1250.         dc    i2'multi1'
  1251.         dc    i2'multi2a'
  1252.         dc    i2'multi3'
  1253.         dc    i2'multi4'
  1254.         dc    i2'multi5'
  1255.         dc    i2'multi6'
  1256.         dc    i2'multi7'
  1257.         dc    i2'multi8'
  1258.         dc    i2'multi9'
  1259.         dc    i2'multi10'
  1260.         dc    i2'multi11'
  1261.         dc    i2'multi12'
  1262.         dc    i2'multi13'
  1263.         dc    i2'multi14'
  1264.         dc    i2'multi15'
  1265.         dc    i2'multi16'
  1266.         dc    i2'multi17'
  1267.         dc    i2'multi18'
  1268.         dc    i2'multi19'
  1269.         dc    i2'multi20'
  1270.         dc    i2'multi21'
  1271.         dc    i2'multi22'
  1272.         dc    i2'multi23'
  1273.         dc    i2'multi24'
  1274.         dc    i2'multi25'
  1275.         dc    i2'multi26'
  1276.         dc    i2'multi27'
  1277.         dc    i2'multi28'
  1278.         dc    i2'multi29'
  1279.         dc    i2'multi30'
  1280.         dc    i2'multi31'
  1281.         dc    i2'multi32'
  1282.         dc    i2'multi33'
  1283.         dc    i2'multi34'
  1284.         dc    i2'multi35'
  1285.         dc    i2'multi36'
  1286.         dc    i2'multi37'
  1287.         dc    i2'multi38'
  1288.         dc    i2'multi39'
  1289.         dc    i2'multi40'
  1290.         dc    i2'multi41'
  1291.         dc    i2'multi42'
  1292.         dc    i2'multi43'
  1293.         dc    i2'multi44'
  1294.         dc    i2'multi45'
  1295.         dc    i2'multi46'
  1296.         dc    i2'multi47'
  1297.         dc    i2'multi48'
  1298.         dc    i2'multi49'
  1299.         dc    i2'multi50'
  1300.         dc    i2'multi51'
  1301.         dc    i2'multi52'
  1302.         dc    i2'multi53'
  1303.         dc    i2'multi54'
  1304.         dc    i2'multi55'
  1305.         dc    i2'multi56'
  1306.         dc    i2'multi57'
  1307.         dc    i2'multi58'
  1308.         dc    i2'multi59'
  1309.         dc    i2'multi60'
  1310.         dc    i2'multi61'
  1311.         dc    i2'multi62'
  1312.         dc    i2'multi63'
  1313.         dc    i2'multi64'
  1314.         dc    i2'multi65'
  1315.         dc    i2'multi66'
  1316.         dc    i2'multi67'
  1317.         dc    i2'multi68'
  1318.         dc    i2'multi69'
  1319.         dc    i2'multi70'
  1320.         dc    i2'multi71'
  1321.         dc    i2'multi72'
  1322.         dc    i2'multi73'
  1323.         dc    i2'multi74'
  1324.         dc    i2'multi75'
  1325.         dc    i2'multi76'
  1326.         dc    i2'multi77'
  1327.         dc    i2'multi78'
  1328.         dc    i2'multi79'
  1329.         dc    i2'multi80'
  1330.         dc    i2'multi81'
  1331.         dc    i2'multi82'
  1332.         dc    i2'multi83'
  1333.         dc    i2'multi84'
  1334.         dc    i2'multi85'
  1335.         dc    i2'multi86'
  1336.         dc    i2'multi87'
  1337.         dc    i2'multi88'
  1338.         dc    i2'multi89'
  1339.         dc    i2'multi90'
  1340.         dc    i2'multi91'
  1341.         dc    i2'multi92'
  1342.         dc    i2'multi93'
  1343.         dc    i2'multi94'
  1344.         dc    i2'multi95'
  1345.         dc    i2'multi96'
  1346.         dc    i2'multi97'
  1347.         dc    i2'multi98'
  1348.         dc    i2'multi99'
  1349.         dc    i2'multi100'
  1350.         dc    i2'multi101'
  1351.         dc    i2'multi102'
  1352.         dc    i2'multi103'
  1353.         dc    i2'multi104'
  1354.         dc    i2'multi105'
  1355.         dc    i2'multi106'
  1356.         dc    i2'multi107'
  1357.         dc    i2'multi108'
  1358.         dc    i2'multi109'
  1359.         dc    i2'multi110'
  1360.         dc    i2'multi111'
  1361.         dc    i2'multi112'
  1362.         dc    i2'multi113'
  1363.         dc    i2'multi114'
  1364.         dc    i2'multi115'
  1365.         dc    i2'multi116'
  1366.         dc    i2'multi117'
  1367.         dc    i2'multi118'
  1368.         dc    i2'multi119'
  1369.         dc    i2'multi120'
  1370.         dc    i2'multi121'
  1371.         dc    i2'multi122'
  1372.         dc    i2'multi123'
  1373.         dc    i2'multi124'
  1374.         dc    i2'multi125'
  1375.         dc    i2'multi126'
  1376.         dc    i2'multi127'
  1377.         dc    i2'multi128'
  1378.         dc    i2'multi129'
  1379.         dc    i2'multi130'
  1380.         dc    i2'multi131'
  1381.         dc    i2'multi132'
  1382.         dc    i2'multi133'
  1383.         dc    i2'multi134'
  1384.         dc    i2'multi135'
  1385.         dc    i2'multi136'
  1386.         dc    i2'multi137'
  1387.         dc    i2'multi138'
  1388.         dc    i2'multi139'
  1389.         dc    i2'multi140'
  1390.         dc    i2'multi141'
  1391.         dc    i2'multi142'
  1392.         dc    i2'multi143'
  1393.         dc    i2'multi144'
  1394.         dc    i2'multi145'
  1395.         dc    i2'multi146'
  1396.         dc    i2'multi147'
  1397.         dc    i2'multi148'
  1398.         dc    i2'multi149'
  1399.         dc    i2'multi150'
  1400.         dc    i2'multi151'
  1401.         dc    i2'multi152'
  1402.         dc    i2'multi153'
  1403.         dc    i2'multi154'
  1404.         dc    i2'multi155'
  1405.         dc    i2'multi156'
  1406.         dc    i2'multi157'
  1407.         dc    i2'multi158'
  1408.         dc    i2'multi159'
  1409.         dc    i2'multi160'
  1410.         dc    i2'multi161'
  1411.         dc    i2'multi162'
  1412.         dc    i2'multi163'
  1413.         dc    i2'multi164'
  1414.         dc    i2'multi165'
  1415.         dc    i2'multi166'
  1416.         dc    i2'multi167'
  1417.         dc    i2'multi168'
  1418.         dc    i2'multi169'
  1419.         dc    i2'multi170'
  1420.         dc    i2'multi171'
  1421.         dc    i2'multi172'
  1422.         dc    i2'multi173'
  1423.         dc    i2'multi174'
  1424.         dc    i2'multi175'
  1425.         dc    i2'multi176'
  1426.         dc    i2'multi177'
  1427.         dc    i2'multi178'
  1428.         dc    i2'multi179'
  1429.         dc    i2'multi180'
  1430.         dc    i2'multi181'
  1431.         dc    i2'multi182'
  1432.         dc    i2'multi183'
  1433.         dc    i2'multi184'
  1434.         dc    i2'multi185'
  1435.         dc    i2'multi186'
  1436.         dc    i2'multi187'
  1437.         dc    i2'multi188'
  1438.         dc    i2'multi189'
  1439.         dc    i2'multi190'
  1440.         dc    i2'multi191'
  1441.         dc    i2'multi192'
  1442.         dc    i2'multi193'
  1443.         dc    i2'multi194'
  1444.         dc    i2'multi195'
  1445.         dc    i2'multi196'
  1446.         dc    i2'multi197'
  1447.         dc    i2'multi198'
  1448.         dc    i2'multi199'
  1449.         dc    i2'multi200'
  1450.         dc    i2'multi201'
  1451.         dc    i2'multi202'
  1452.         dc    i2'multi203'
  1453.         dc    i2'multi204'
  1454.         dc    i2'multi205'
  1455.         dc    i2'multi206'
  1456.         dc    i2'multi207'
  1457.         dc    i2'multi208'
  1458.         dc    i2'multi209'
  1459.         dc    i2'multi210'
  1460.         dc    i2'multi211'
  1461.         dc    i2'multi212'
  1462.         dc    i2'multi213'
  1463.         dc    i2'multi214'
  1464.         dc    i2'multi215'
  1465.         dc    i2'multi216'
  1466.         dc    i2'multi217'
  1467.         dc    i2'multi218'
  1468.         dc    i2'multi219'
  1469.         dc    i2'multi220'
  1470.         dc    i2'multi221'
  1471.         dc    i2'multi222'
  1472.         dc    i2'multi223'
  1473.         dc    i2'multi224'
  1474.         dc    i2'multi225'
  1475.         dc    i2'multi226'
  1476.         dc    i2'multi227'
  1477.         dc    i2'multi228'
  1478.         dc    i2'multi229'
  1479.         dc    i2'multi230'
  1480.         dc    i2'multi231'
  1481.         dc    i2'multi232'
  1482.         dc    i2'multi233'
  1483.         dc    i2'multi234'
  1484.         dc    i2'multi235'
  1485.         dc    i2'multi236'
  1486.         dc    i2'multi237'
  1487.         dc    i2'multi238'
  1488.         dc    i2'multi239'
  1489.         dc    i2'multi240'
  1490.         dc    i2'multi241'
  1491.         dc    i2'multi242'
  1492.         dc    i2'multi243'
  1493.         dc    i2'multi244'
  1494.         dc    i2'multi245'
  1495.         dc    i2'multi246'
  1496.         dc    i2'multi247'
  1497.         dc    i2'multi248'
  1498.         dc    i2'multi249'
  1499.         dc    i2'multi250'
  1500.         dc    i2'multi251'
  1501.         dc    i2'multi252'
  1502.         dc    i2'multi253'
  1503.         dc    i2'multi254'
  1504.         dc    i2'multi255'
  1505.         dc    i2'multi256'
  1506.                                      
  1507. ShiftValue10    dc    i2'0'
  1508. ShiftValue11    dc    i2'0'
  1509. ShiftValue12    dc    i2'0'
  1510. ShiftValue13    dc    i2'0'
  1511. ShiftValue14    dc    i2'0'
  1512. ShiftValue15    dc    i2'0'
  1513. ShiftValue16    dc    i2'0'
  1514. ShiftValue17    dc    i2'0'
  1515.                           
  1516. multi0        anop
  1517.         lda    #$0000
  1518.         rts
  1519. multi1        anop
  1520.         rts
  1521. multi256        xba
  1522.         and    #$ff00    ;5 cycles
  1523.         rts
  1524.  
  1525. multi128        asl    A
  1526. multi64        asl    A
  1527. multi32        asl    A
  1528. multi16        asl    A
  1529. multi8        asl    A
  1530. multi4        asl    A
  1531. multi2a        asl    A    ;2 cycles
  1532.         rts
  1533.  
  1534. multi192        asl    A
  1535. multi96        asl    A
  1536. multi48       asl    A
  1537. multi24        asl    A
  1538. multi12        asl    A
  1539. multi6        asl    A
  1540. multi3        sta    ShiftValue1
  1541.         asl    A
  1542.         clc        ;12 cycles
  1543.         adc    ShiftValue1
  1544.         rts
  1545.  
  1546. multi160        asl    A
  1547. multi80        asl    A
  1548. multi40        asl    A
  1549. multi20        asl    A
  1550. multi10        asl    A
  1551. multi5        sta    ShiftValue1
  1552.         asl    A
  1553.         asl    A    ;14 cycles
  1554.         clc
  1555.         adc    ShiftValue1
  1556.         rts
  1557.  
  1558. multi224        asl    A
  1559. multi112        asl    A
  1560. multi56        asl    A
  1561. multi28        asl    A
  1562. multi14        asl    A
  1563. multi7        sta    ShiftValue1
  1564.         asl    A
  1565.         sta    ShiftValue2    ;22 cycles
  1566.         asl    A
  1567.         clc
  1568.         adc    ShiftValue1
  1569.         adc    ShiftValue2
  1570.         rts
  1571.  
  1572. multi144        asl    A
  1573. multi72        asl    A
  1574. multi36        asl    A
  1575. multi18        asl    A
  1576. multi9        sta    ShiftValue1
  1577.         asl    A
  1578.         asl    A    ;16 cycles
  1579.         asl    A
  1580.         clc
  1581.         adc    ShiftValue1
  1582.         rts
  1583.  
  1584. multi176        asl    A
  1585. multi88        asl    A
  1586. multi44        asl    A
  1587. multi22        asl    A
  1588. multi11        sta    ShiftValue1
  1589.         asl    A
  1590.         sta    ShiftValue2    ;24 cycles
  1591.         asl    A
  1592.         asl    A
  1593.         clc
  1594.         adc    ShiftValue1
  1595.         adc    ShiftValue2
  1596.         rts
  1597.  
  1598. multi208        asl    A
  1599. multi104        asl    A
  1600. multi52        asl    A
  1601. multi26        asl    A
  1602. multi13        sta    ShiftValue1
  1603.         asl    A
  1604.         asl    A    ;24 cycles
  1605.         sta    ShiftValue2
  1606.         asl    A
  1607.         clc
  1608.         adc    ShiftValue1
  1609.         adc    ShiftValue2
  1610.         rts
  1611.  
  1612. multi240        asl    A
  1613. multi120        asl    A
  1614. multi60        asl    A
  1615. multi30        asl    A
  1616. multi15        sta    ShiftValue1
  1617.         asl    A
  1618.         asl    A    ;20 cycles
  1619.         asl    A
  1620.         asl    A
  1621.         sec
  1622.         sbc    ShiftValue1
  1623.         rts
  1624.  
  1625. multi136        asl    A
  1626. multi68        asl    A
  1627. multi34        asl    A
  1628. multi17        sta    ShiftValue1
  1629.         asl    A
  1630.         asl    A    ;18 cycles
  1631.         asl    A
  1632.         asl    A
  1633.         clc
  1634.         adc    ShiftValue1
  1635.         rts
  1636.  
  1637. multi152        asl    A
  1638. multi76        asl    A
  1639. multi38        asl    A
  1640. multi19        sta    ShiftValue1
  1641.         asl    A
  1642.         sta    ShiftValue2    ;26 cycles
  1643.         asl    A
  1644.         asl    A
  1645.         asl    A
  1646.         clc
  1647.         adc    ShiftValue1
  1648.         adc    ShiftValue2
  1649.         rts
  1650.  
  1651. multi168        asl    A
  1652. multi84        asl    A
  1653. multi42        asl    A
  1654. multi21        sta    ShiftValue1
  1655.         asl    A
  1656.         asl    A    ;26 cycles
  1657.         sta    ShiftValue2
  1658.         asl    A
  1659.         asl    A
  1660.         clc
  1661.         adc    ShiftValue1
  1662.         adc    ShiftValue2
  1663.         rts
  1664.  
  1665. multi184        asl    A
  1666. multi92        asl    A
  1667. multi46        asl    A
  1668. multi23        sta    ShiftValue1
  1669.         asl    A
  1670.         asl    A    ;28 cycles
  1671.         asl    A
  1672.         sta    ShiftValue2
  1673.         asl    A
  1674.         sec
  1675.         sbc    ShiftValue1
  1676.         clc
  1677.         adc    ShiftValue2
  1678.         rts
  1679.  
  1680. multi200        asl    A
  1681. multi100        asl    A
  1682. multi50        asl    A
  1683. multi25        sta    ShiftValue1
  1684.         asl    A
  1685.         asl    A    ;28 cycles
  1686.         asl    A
  1687.         sta    ShiftValue2
  1688.         asl    A
  1689.         clc
  1690.         adc    ShiftValue1
  1691.         adc    ShiftValue2
  1692.         rts
  1693.  
  1694. multi216        asl    A
  1695. multi108        asl    A        
  1696. multi54        asl    A
  1697. multi27        sta    ShiftValue1        ;store initial value
  1698.         asl    A
  1699.         asl    A    ;30 cycles
  1700.         sta    ShiftValue2
  1701.         asl    A
  1702.         asl    A
  1703.         asl    A
  1704.         sec
  1705.         sbc    ShiftValue1
  1706.         sec
  1707.         sbc    ShiftValue2
  1708.         rts
  1709.  
  1710. multi232        asl    A
  1711. multi116        asl    A
  1712. multi58        asl    A
  1713. multi29        sta    ShiftValue1    ;0001 1101
  1714.         asl    A
  1715.         sta    ShiftValue2    ;30 cycles
  1716.         asl    A
  1717.         asl    A
  1718.         asl    A
  1719.         asl    A
  1720.         sec
  1721.         sbc    ShiftValue1
  1722.         sec
  1723.         sbc    ShiftValue2
  1724.         rts
  1725.  
  1726. multi248        asl    A
  1727. multi124        asl    A
  1728. multi62        asl    A
  1729. multi31        sta    ShiftValue1    ;0001 1111
  1730.         asl    A
  1731.         asl    A    ;22 cycles
  1732.         asl    A
  1733.         asl    A
  1734.         asl    A
  1735.         sec
  1736.         sbc    ShiftValue1
  1737.         rts
  1738.  
  1739. multi132        asl    A
  1740. multi66        asl    A
  1741. multi33        sta    ShiftValue1    ;0010 0001
  1742.         asl    A
  1743.         asl    A    ;20 cycles
  1744.         asl    A
  1745.         asl    A
  1746.         asl    A
  1747.         clc
  1748.         adc    ShiftValue1
  1749.         rts
  1750.  
  1751. multi140        asl    A
  1752. multi70        asl    A
  1753. multi35        sta    ShiftValue1    ;0010 0011
  1754.         asl    A
  1755.         sta    ShiftValue2    ;28 cycles
  1756.         asl    A
  1757.         asl    A
  1758.         asl    A
  1759.         asl    A
  1760.         clc
  1761.         adc    ShiftValue1
  1762.         adc    ShiftValue2
  1763.         rts
  1764.  
  1765. multi148        asl    A
  1766. multi74        asl    A
  1767. multi37        sta    ShiftValue1    ;0010 0101
  1768.         asl    A
  1769.         asl    A    ;28 cycles
  1770.         sta    ShiftValue2
  1771.         asl    A
  1772.         asl    A
  1773.         asl    A
  1774.         clc
  1775.         adc    ShiftValue1
  1776.         adc    ShiftValue2
  1777.         rts
  1778.  
  1779. multi156        asl    A
  1780. multi78        asl    A
  1781. multi39        sta    ShiftValue1    ;0010 0111
  1782.         asl    A
  1783.         asl    A    ;30 cycles
  1784.         asl    A
  1785.         sta    ShiftValue2
  1786.         asl    A
  1787.         asl    A
  1788.         sec
  1789.         sbc    ShiftValue1
  1790.         clc
  1791.         adc    ShiftValue2
  1792.         rts   
  1793.                           
  1794. multi164        asl    A               
  1795. multi82        asl    A
  1796. multi41        sta    ShiftValue1    ;0010 1001
  1797.         asl    A
  1798.         asl    A    ;28 cycles
  1799.         asl    A
  1800.         sta    ShiftValue2
  1801.         asl    A
  1802.         asl    A
  1803.         clc
  1804.         adc    ShiftValue1
  1805.         adc    ShiftValue2
  1806.         rts
  1807.  
  1808. multi172        asl    A
  1809. multi86        asl    A
  1810. multi43        sta    ShiftValue1
  1811.         asl    A
  1812.         sta    ShiftValue2    ;36 cycles
  1813.         asl    A
  1814.         asl    A
  1815.         sta    ShiftValue3
  1816.         asl    A
  1817.         asl    A
  1818.         clc
  1819.         adc    ShiftValue1
  1820.         adc    ShiftValue2
  1821.         adc    ShiftValue3
  1822.         rts
  1823.  
  1824. multi180        asl    A
  1825. multi90        asl    A
  1826. multi45        sta    ShiftValue1    ;0010 1101
  1827.         asl    A
  1828.         asl    A    ;36 cycles
  1829.         sta    ShiftValue2
  1830.         asl    A
  1831.         sta    ShiftValue3
  1832.         asl    A
  1833.         asl    A
  1834.         clc
  1835.         adc    ShiftValue1
  1836.         adc    ShiftValue2
  1837.         adc    ShiftValue3
  1838.         rts
  1839.  
  1840. multi188        asl    A
  1841. multi94        asl    A
  1842. multi47        sta    ShiftValue1    ;0010 1111
  1843.         asl    A
  1844.         asl    A    ;30 cycles
  1845.         asl    A
  1846.         asl    A
  1847.         sta    ShiftValue2
  1848.         asl    A
  1849.         sec
  1850.         sbc    ShiftValue1
  1851.         clc
  1852.         adc    ShiftValue2
  1853.         rts
  1854.  
  1855. multi196        asl    A
  1856. multi98        asl    A
  1857. multi49        sta    ShiftValue1    ;0011 0001
  1858.         asl    A
  1859.         asl    A    ;28 cycles
  1860.         asl    A
  1861.         asl    A
  1862.         sta    ShiftValue2
  1863.         asl    A
  1864.         clc
  1865.         adc    ShiftValue1
  1866.         adc    ShiftValue2
  1867.         rts
  1868.  
  1869. multi204        asl    A
  1870. multi102        asl    A
  1871. multi51        sta    ShiftValue1
  1872.         asl    A
  1873.         sta    ShiftValue2    ;36 cycles
  1874.         asl    A
  1875.         asl    A
  1876.         asl    A
  1877.         sta    ShiftValue3
  1878.         asl    A
  1879.         clc
  1880.         adc    ShiftValue1
  1881.         adc    ShiftValue2
  1882.         adc    ShiftValue3
  1883.         rts
  1884.  
  1885. multi212        asl    A
  1886. multi106        asl    A
  1887. multi53        sta    ShiftValue1    ;0011 0101
  1888.         asl    A
  1889.         asl    A    ;42 cycles
  1890.         sta    ShiftValue2
  1891.         asl    A
  1892.         asl    A
  1893.         sta    ShiftValue3
  1894.         asl    A
  1895.         clc
  1896.         adc    ShiftValue1
  1897.         adc    ShiftValue2
  1898.         adc    ShiftValue3
  1899.         rts         
  1900.  
  1901. multi220        asl    A
  1902. multi110        asl    A
  1903. multi55        sta    ShiftValue1    ;0011 0111
  1904.         asl    A
  1905.         asl    A    ;38 cycles
  1906.         asl    A
  1907.         sta    ShiftValue2
  1908.         asl    A
  1909.         sta    ShiftValue3
  1910.         asl    A
  1911.         sec
  1912.         sbc    ShiftValue1
  1913.         clc
  1914.         adc    ShiftValue2
  1915.         adc    Shiftvalue3
  1916.         rts
  1917.  
  1918. multi228        asl    A
  1919. multi114        asl    A
  1920. multi57        sta    ShiftValue1    ;0011 1001
  1921.         asl    A
  1922.         asl    A    ;36 cycles
  1923.         asl    A
  1924.         sta    ShiftValue2
  1925.         asl    A
  1926.         sta    ShiftValue3
  1927.         asl    A
  1928.         clc
  1929.         adc    ShiftValue1
  1930.         adc    ShiftValue2
  1931.         adc    Shiftvalue3
  1932.         rts
  1933.  
  1934. multi236        asl    A
  1935. multi118        asl    A
  1936. multi59        sta    ShiftValue1    ;0011 1011
  1937.         asl    A    ;64-5=59
  1938.         asl    A    ;34 cycles
  1939.         sta    ShiftValue2
  1940.         asl    A
  1941.         asl    A
  1942.         asl    A
  1943.         asl    A
  1944.         sec
  1945.         sbc    ShiftValue1
  1946.         sec
  1947.         sbc    ShiftValue2
  1948.         rts
  1949.  
  1950. multi244        asl    A
  1951. multi122        asl    A
  1952. multi61        sta    ShiftValue1    ;0011 1101
  1953.         asl    A    ;64-2-1
  1954.         sta    ShiftValue2    ;34 cycles
  1955.         asl    A
  1956.         asl    A
  1957.         asl    A
  1958.         asl    A
  1959.         asl    A
  1960.         sec
  1961.         sbc    ShiftValue1
  1962.         sec
  1963.         sbc    ShiftValue2
  1964.         rts
  1965.  
  1966. multi252        asl    A
  1967. multi126        asl    A
  1968. multi63        sta    ShiftValue1    ;0011 1111
  1969.         asl    A    ;64-1
  1970.         asl    A    ;24 cycles
  1971.         asl    A
  1972.         asl    A
  1973.         asl    A
  1974.         asl    A
  1975.         sec
  1976.         sbc    ShiftValue1
  1977.         rts
  1978.  
  1979. multi130        asl    A
  1980. multi65        sta    ShiftValue1    ;0100 0001
  1981.         asl    A    ;64+1
  1982.         asl    A    ;22 cycles
  1983.         asl    A
  1984.         asl    A
  1985.         asl    A
  1986.         asl    A
  1987.         clc
  1988.         adc    ShiftValue1
  1989.         rts
  1990.  
  1991. multi134        asl    A
  1992. multi67        sta    ShiftValue1    ;0100 0011
  1993.         asl    A
  1994.         sta    ShiftValue2    ;30 cycles
  1995.         asl    A
  1996.         asl    A
  1997.         asl    A
  1998.         asl    A
  1999.         asl    A
  2000.         clc
  2001.         adc    ShiftValue1
  2002.         adc    ShiftValue2
  2003.         rts
  2004.  
  2005. multi138        asl    A
  2006. multi69        sta    ShiftValue1    ;0100 0101
  2007.         asl    A
  2008.         asl    A    ;30 cycles
  2009.         sta    ShiftValue2
  2010.         asl    A
  2011.         asl    A
  2012.         asl    A
  2013.         asl    A
  2014.         clc
  2015.         adc    ShiftValue1
  2016.         adc    ShiftValue2
  2017.         rts
  2018.  
  2019. multi142        asl    A
  2020. multi71        sta    ShiftValue1    ;0100 0111
  2021.         asl    A
  2022.         asl    A    ;32 cycles
  2023.         asl    A
  2024.         sta    ShiftValue2
  2025.         asl    A
  2026.         asl    A
  2027.         asl    A
  2028.         sec
  2029.         sbc    ShiftValue1
  2030.         clc
  2031.         adc    ShiftValue2
  2032.         rts
  2033.  
  2034. multi146        asl    A
  2035. multi73        sta    ShiftValue1    ;0100 1001
  2036.         asl    A
  2037.         asl    A    ;30 cycles
  2038.         asl    A
  2039.         sta    ShiftValue2
  2040.         asl    A
  2041.         asl    A
  2042.         asl    A
  2043.         clc
  2044.         adc    ShiftValue1
  2045.         adc    ShiftValue2
  2046.         rts
  2047.  
  2048. multi150        asl    A
  2049. multi75        sta    ShiftValue1    ;0100 1011
  2050.         asl    A
  2051.         sta    ShiftValue2    ;38 cycles
  2052.         asl    A
  2053.         asl    A
  2054.         sta    ShiftValue3
  2055.         asl    A
  2056.         asl    A
  2057.         asl    A
  2058.         clc
  2059.         adc    ShiftValue1
  2060.         adc    ShiftValue2
  2061.         adc    ShiftValue3
  2062.         rts
  2063.  
  2064. multi154        asl    A
  2065. multi77        sta    ShiftValue1    ;0100 1101
  2066.         asl    A
  2067.         asl    A    ;38 cycles
  2068.         sta    ShiftValue2
  2069.         asl    A
  2070.         sta    ShiftValue3
  2071.         asl    A
  2072.         asl    A
  2073.         asl    A
  2074.         clc
  2075.         adc    ShiftValue1
  2076.         adc    ShiftValue2
  2077.         adc    ShiftValue3
  2078.         rts
  2079.  
  2080. multi158        asl    A
  2081. multi79        sta    ShiftValue1    ;0100 1111
  2082.         asl    A
  2083.         asl    A    ;32 cycles
  2084.         asl    A
  2085.         asl    A
  2086.         sta    ShiftValue2
  2087.         asl    A
  2088.         asl    A
  2089.         sec
  2090.         sbc    ShiftValue1
  2091.         clc     
  2092.         adc    ShiftValue2
  2093.         rts
  2094.  
  2095. multi162        asl    A
  2096. multi81        sta    ShiftValue1    ;0101 0001
  2097.         asl    A
  2098.         asl    A    ;30 cycles
  2099.         asl    A
  2100.         asl    A
  2101.         sta    ShiftValue2
  2102.         asl    A
  2103.         asl    A
  2104.         clc
  2105.         adc    ShiftValue1
  2106.         adc    ShiftValue2
  2107.         rts
  2108.  
  2109. multi166        asl    A
  2110. multi83        sta    ShiftValue1    ;0101 0011
  2111.         asl    A
  2112.         sta    ShiftValue2    ;38 cycles
  2113.         asl    A
  2114.         asl    A
  2115.         asl    A
  2116.         sta    ShiftValue3
  2117.         asl    A
  2118.         asl    A
  2119.         clc
  2120.         adc    ShiftValue1
  2121.         adc    ShiftValue2
  2122.         adc    ShiftValue3
  2123.         rts
  2124.  
  2125. multi170        asl    A
  2126. multi85        sta    ShiftValue1    ;0101 0101
  2127.         asl    A
  2128.         asl    A    ;38 cycles
  2129.         sta    ShiftValue2
  2130.         asl    A
  2131.         asl    A
  2132.         sta    ShiftValue3
  2133.         asl    A
  2134.         asl    A
  2135.         clc
  2136.         adc    ShiftValue1
  2137.         adc    ShiftValue2
  2138.         adc    ShiftValue3
  2139.         rts
  2140.  
  2141. multi174        asl    A
  2142. multi87        sta    ShiftValue1    ;0101 0111
  2143.         asl    A
  2144.         asl    A    ;40 cycles
  2145.         asl    A
  2146.         sta    ShiftValue2
  2147.         asl    A
  2148.         sta    ShiftValue3
  2149.         asl    A
  2150.         asl    A
  2151.         sec
  2152.         sbc    ShiftValue1
  2153.         clc
  2154.         adc    ShiftValue2
  2155.         adc    ShiftValue3
  2156.         rts
  2157.  
  2158. multi178        asl    A
  2159. multi89        sta    ShiftValue1    ;0101 1001
  2160.         asl    A
  2161.         asl    A    ;38 cycles
  2162.         asl    A
  2163.         sta    ShiftValue2
  2164.         asl    A
  2165.         sta    ShiftValue3
  2166.         asl    A
  2167.         asl    A
  2168.         clc
  2169.         adc    ShiftValue1
  2170.         adc    ShiftValue2
  2171.         adc    ShiftValue3
  2172.         rts
  2173.  
  2174. multi182        asl    A
  2175. multi91        sta    ShiftValue1    ;0101 1011
  2176.         asl    A    ;96-5
  2177.         asl    A    ;40 cycles
  2178.         sta    ShiftValue2
  2179.         asl    A        
  2180.         asl    A        
  2181.         asl    A
  2182.         sta    ShiftValue3
  2183.         asl    A
  2184.         sec
  2185.         sbc    ShiftValue1
  2186.         sec
  2187.         sbc    ShiftValue2
  2188.         clc
  2189.         adc    ShiftValue3
  2190.         rts
  2191.                       
  2192. multi186        asl    A
  2193. multi93        sta    ShiftValue1    ;0101 1101
  2194.         asl    A    ;96-3
  2195.         sta    ShiftValue2    ;40 cycles
  2196.         asl    A
  2197.         asl    A
  2198.         asl    A
  2199.         asl    A
  2200.         sta    ShiftValue3
  2201.         asl    A
  2202.         sec
  2203.         sbc    ShiftValue1
  2204.         sec
  2205.         sbc    ShiftValue2
  2206.         clc
  2207.         adc    ShiftValue3
  2208.         rts        
  2209.  
  2210. multi190        asl    A
  2211. multi95        sta    ShiftValue1    ;0101 1111
  2212.         asl    A    ;64+32-1
  2213.         asl    A    ;32 cycles
  2214.         asl    A
  2215.         asl    A
  2216.         asl    A
  2217.         sta    ShiftValue2
  2218.         asl    A
  2219.         sec
  2220.         sbc    ShiftValue1
  2221.         clc
  2222.         adc    ShiftValue2
  2223.         rts
  2224.  
  2225. multi194        asl    A
  2226. multi97        sta    ShiftValue1    ;0110 0001
  2227.         asl    A    ;64+32+1
  2228.         asl    A    ;30 cycles
  2229.         asl    A
  2230.         asl    A
  2231.         asl    A
  2232.         sta    ShiftValue2
  2233.         asl    A
  2234.         clc
  2235.         adc    ShiftValue1
  2236.         adc    ShiftValue2
  2237.         rts
  2238.  
  2239. multi198        asl    A
  2240. multi99        sta    ShiftValue1    ;0110 0011
  2241.         asl    A    ;64+32+2+1
  2242.         sta    ShiftValue2    ;38 cycles
  2243.         asl    A
  2244.         asl    A
  2245.         asl    A
  2246.         asl    A
  2247.         sta    ShiftValue3
  2248.         asl    A
  2249.         clc
  2250.         adc    ShiftValue1
  2251.         adc    ShiftValue2
  2252.         adc    ShiftValue3
  2253.         rts
  2254.  
  2255. multi202        asl    A
  2256. multi101        sta    ShiftValue1    ;0110 0101
  2257.         asl    A    ;64+32+4+1
  2258.         asl    A    ;38 cycles
  2259.         sta    ShiftValue2
  2260.         asl    A
  2261.         asl    A
  2262.         asl    A
  2263.         sta    ShiftValue3
  2264.         asl    A
  2265.         clc
  2266.         adc    ShiftValue1
  2267.         adc    ShiftValue2
  2268.         adc    ShiftValue3
  2269.         rts         
  2270.  
  2271. multi206        asl    A
  2272. multi103        sta    ShiftValue1    ;0110 0111
  2273.         asl    A    ;64+32+8-1
  2274.         asl    A    ;40 cycles
  2275.         asl    A
  2276.         sta    ShiftValue2
  2277.         asl    A
  2278.         asl    A
  2279.         sta    ShiftValue3
  2280.         asl    A
  2281.         sec
  2282.         sbc    ShiftValue1
  2283.         clc
  2284.         adc    ShiftValue2
  2285.         adc    ShiftValue3
  2286.         rts         
  2287.  
  2288. multi210        asl    A
  2289. multi105        sta    ShiftValue1    ;0110 1001
  2290.         asl    A    ;64+32+8+1
  2291.         asl    A    ;38 cycles
  2292.         asl    A
  2293.         sta    ShiftValue2
  2294.         asl    A
  2295.         asl    A
  2296.         sta    ShiftValue3
  2297.         asl    A
  2298.         clc
  2299.         adc    ShiftValue1
  2300.         adc    ShiftValue2
  2301.         adc    ShiftValue3
  2302.         rts
  2303.         
  2304. multi214        asl    A
  2305. multi107        sta    ShiftValue1    ;0110 1011
  2306.         asl    A    ;128-16-4-1
  2307.         asl    A    ;44 cycles
  2308.         sta    ShiftValue2
  2309.         asl    A
  2310.         asl    A
  2311.         sta    ShiftValue3
  2312.         asl    A
  2313.         asl    A        
  2314.         asl    A
  2315.         sec
  2316.         sbc    ShiftValue1
  2317.         sec
  2318.         sbc    ShiftValue2
  2319.         sec
  2320.         sbc    ShiftValue3
  2321.         rts
  2322.         
  2323. multi218        asl    A
  2324. multi109        sta    ShiftValue1    ;0110 1101
  2325.         asl    A    ;128-16-2-1
  2326.         sta    ShiftValue2    ;44
  2327.         asl    A
  2328.         asl    A
  2329.         asl    A
  2330.         sta    ShiftValue3
  2331.         asl    A
  2332.         asl    A
  2333.         asl    A
  2334.         sec
  2335.         sbc    ShiftValue1
  2336.         sec
  2337.         sbc    ShiftValue2
  2338.         sec
  2339.         sbc    ShiftValue3
  2340.         rts
  2341.  
  2342. multi222        asl    A
  2343. multi111        sta    ShiftValue1    ;0110 1111
  2344.         asl    A    ;64+32-16-1
  2345.         asl    A    ;40 cycles
  2346.         asl    A
  2347.         asl    A
  2348.         sta    ShiftValue2
  2349.         asl    A
  2350.         sta    ShiftValue3
  2351.         asl    A
  2352.         sec
  2353.         sbc    ShiftValue1
  2354.         clc
  2355.         adc    ShiftValue2
  2356.         adc    ShiftValue3
  2357.         rts
  2358.  
  2359. multi226        asl    A
  2360. multi113        sta    ShiftValue1    ;0111 0001
  2361.         asl    A    ;64+32+16+1
  2362.         asl    A    ;38 cycles
  2363.         asl    A
  2364.         asl    A
  2365.         sta    ShiftValue2
  2366.         asl    A
  2367.         sta    ShiftValue3
  2368.         asl    A
  2369.         clc
  2370.         adc    ShiftValue1
  2371.         adc    ShiftValue2
  2372.         adc    ShiftValue3
  2373.         rts
  2374.     
  2375. multi230        asl    A
  2376. multi115        sta    ShiftValue1    ;0111 0011
  2377.         asl    A    ;128-8-4-1
  2378.         asl    A
  2379.         sta    ShiftValue2    ;44 cycles
  2380.         asl    A
  2381.         sta    ShiftValue3
  2382.         asl    A
  2383.         asl    A
  2384.         asl    A
  2385.         asl    A
  2386.         sec
  2387.         sbc    ShiftValue1
  2388.         sec
  2389.         sbc    ShiftValue2
  2390.         sec
  2391.         sbc    ShiftValue3
  2392.         rts
  2393.             
  2394. multi234        asl    A
  2395. multi117        sta    ShiftValue1    ;0111 0101
  2396.         asl    A    ;128-8-2-1
  2397.         sta    ShiftValue2    ;44 cycles
  2398.         asl    A
  2399.         asl    A
  2400.         sta    ShiftValue3
  2401.         asl    A
  2402.         asl    A
  2403.         asl    A
  2404.         asl    A
  2405.         sec
  2406.         sbc    ShiftValue1
  2407.         sec
  2408.         sbc    ShiftValue2
  2409.         sec
  2410.         sbc    ShiftValue3
  2411.         rts
  2412.             
  2413. multi238        asl    A
  2414. multi119        sta    ShiftValue1    ;0111 0111
  2415.         asl    A    ;128-9
  2416.         asl    A    ;34 cycles
  2417.         asl    A
  2418.         sta    ShiftValue2
  2419.         asl    A
  2420.         asl    A
  2421.         asl    A
  2422.         asl    A
  2423.         sec
  2424.         sbc    ShiftValue1
  2425.         sec
  2426.         sbc    ShiftValue2
  2427.         rts
  2428.  
  2429. multi242        asl    A
  2430. multi121        sta    ShiftValue1    ;0111 1001
  2431.         asl    A    ;128-8+1
  2432.         asl    A    ;34 cycles
  2433.         asl    A
  2434.         sta    ShiftValue2
  2435.         asl    A
  2436.         asl    A
  2437.         asl    A
  2438.         asl    A
  2439.         clc
  2440.         adc    ShiftValue1
  2441.         sec
  2442.         sbc    ShiftValue2
  2443.         rts
  2444.  
  2445. multi246        asl    A
  2446. multi123        sta    ShiftValue1    ;0111 1011
  2447.         asl    A    ;128-4-1
  2448.         asl    A    ;34 cycles
  2449.         sta    ShiftValue2
  2450.         asl    A
  2451.         asl    A
  2452.         asl    A
  2453.         asl    A
  2454.         asl    A          
  2455.         sec
  2456.         adc    ShiftValue1
  2457.         sec
  2458.         sbc    ShiftValue2
  2459.         rts
  2460.  
  2461. multi250        asl    A
  2462. multi125        sta    ShiftValue1    ;0111 1101
  2463.         asl    A    ;128-2-1
  2464.         sta    ShiftValue2    ;34 cycles
  2465.         asl    A
  2466.         asl    A
  2467.         asl    A                            
  2468.         asl    A
  2469.         asl    A
  2470.         asl    A
  2471.         sec
  2472.         sbc    ShiftValue1
  2473.         sec
  2474.         sbc    ShiftValue2
  2475.         rts
  2476.  
  2477. multi254        asl    A
  2478. multi127        sta    ShiftValue1    ;0111 1111
  2479.         asl    A    ;128-1
  2480.         asl    A    ;26 cycles
  2481.         asl    A
  2482.         asl    A                            
  2483.         asl    A
  2484.         asl    A
  2485.         asl    A
  2486.         sec
  2487.         sbc    ShiftValue1
  2488.         rts
  2489.  
  2490. multi129        sta    ShiftValue1    ;1000 0001
  2491.         asl    A    ;128+1
  2492.         asl    A    ;24 cycles
  2493.         asl    A
  2494.         asl    A
  2495.         asl    A
  2496.         asl    A                            
  2497.         asl    A
  2498.         clc
  2499.         adc    ShiftValue1
  2500.         rts
  2501.         
  2502. multi131        sta    ShiftValue1    ;1000 0011
  2503.         asl    A    ;128+3
  2504.         sta    ShiftValue2    ;32 cycles
  2505.         asl    A
  2506.         asl    A
  2507.         asl    A
  2508.         asl    A                            
  2509.         asl    A
  2510.         asl    A
  2511.         clc
  2512.         adc    ShiftValue1
  2513.         adc    ShiftValue2
  2514.         rts
  2515.         
  2516. multi133        sta    ShiftValue1    ;1000 0101
  2517.         asl    A    ;128+5
  2518.         asl    A    ;32 cycles
  2519.         sta    ShiftValue2
  2520.         asl    A
  2521.         asl    A
  2522.         asl    A
  2523.         asl    A                            
  2524.         asl    A
  2525.         clc
  2526.         adc    ShiftValue1
  2527.         adc    ShiftValue2
  2528.         rts
  2529.         
  2530. multi135        sta    ShiftValue1    ;1000 0111
  2531.         asl    A    ;128+8-1
  2532.         asl    A    ;34 cycles
  2533.         asl    A
  2534.         sta    ShiftValue2
  2535.         asl    A
  2536.         asl    A
  2537.         asl    A                            
  2538.         asl    A
  2539.         sec
  2540.         sbc    ShiftValue1
  2541.         clc
  2542.         adc    ShiftValue2
  2543.         rts
  2544.         
  2545. multi137        sta    ShiftValue1    ;1000 1001
  2546.         asl    A    ;128+8+1
  2547.         asl    A    ;32 cycles
  2548.         asl    A
  2549.         sta    ShiftValue2
  2550.         asl    A
  2551.         asl    A                            
  2552.         asl    A
  2553.         asl    A
  2554.         clc
  2555.         adc    ShiftValue1
  2556.         adc    ShiftValue2
  2557.         rts
  2558.         
  2559. multi139        sta    ShiftValue1    ;1000 1011
  2560.         asl    A    ;128+8+2+1
  2561.         sta    ShiftValue2    ;40 cycles
  2562.         asl    A
  2563.         asl    A
  2564.         sta    ShiftValue3
  2565.         asl    A       
  2566.         asl    A
  2567.         asl    A
  2568.         asl    A                            
  2569.         clc
  2570.         adc    ShiftValue1
  2571.         adc    ShiftValue2
  2572.         adc    ShiftValue3
  2573.         rts              
  2574.         
  2575. multi141        sta    ShiftValue1    ;1000 1101
  2576.         asl    A    ;128+8+2+1
  2577.         asl    A    ;40 cycles
  2578.         sta    ShiftValue2
  2579.         asl    A
  2580.         sta    ShiftValue3
  2581.         asl    A       
  2582.         asl    A
  2583.         asl    A
  2584.         asl    A                            
  2585.         clc
  2586.         adc    ShiftValue1
  2587.         adc    ShiftValue2
  2588.         adc    ShiftValue3
  2589.         rts              
  2590.         
  2591. multi143        sta    ShiftValue1    ;1000 1111
  2592.         asl    A    ;128+16-1
  2593.         asl    A    ;34 cycles
  2594.         asl    A
  2595.         asl    A       
  2596.         sta    ShiftValue2
  2597.         asl    A
  2598.         asl    A
  2599.         asl    A                     
  2600.         sec
  2601.         sbc    ShiftValue1
  2602.         clc
  2603.         adc    ShiftValue2
  2604.         rts              
  2605.         
  2606. multi145        sta    ShiftValue1    ;1001 0001
  2607.         asl    A    ;128+16+1
  2608.         asl    A    ;32 cycles
  2609.         asl    A
  2610.         asl    A       
  2611.         sta    ShiftValue2
  2612.         asl    A
  2613.         asl    A
  2614.         asl    A                     
  2615.         clc
  2616.         adc    ShiftValue1
  2617.         adc    ShiftValue2
  2618.         rts              
  2619.         
  2620. multi147        sta    ShiftValue1    ;1001 0011
  2621.         asl    A    ;128+16+3
  2622.         sta    ShiftValue2    ;40 cycles
  2623.         asl    A
  2624.         asl    A
  2625.         asl    A       
  2626.         sta    ShiftValue3
  2627.         asl    A
  2628.         asl    A
  2629.         asl    A                     
  2630.         clc
  2631.         adc    ShiftValue1
  2632.         adc    ShiftValue2
  2633.         adc    ShiftValue3
  2634.         rts              
  2635.                                                  
  2636. multi149        sta    ShiftValue1    ;1001 0101
  2637.         asl    A    ;128+16+5
  2638.         asl    A
  2639.         sta    ShiftValue2    ;40 cycles
  2640.         asl    A
  2641.         asl    A       
  2642.         sta    ShiftValue3
  2643.         asl    A
  2644.         asl    A
  2645.         asl    A                     
  2646.         clc
  2647.         adc    ShiftValue1
  2648.         adc    ShiftValue2
  2649.         adc    ShiftValue3
  2650.         rts              
  2651.                                                  
  2652. multi151        sta    ShiftValue1    ;1001 0111
  2653.         asl    A    ;128+16+8-1
  2654.         asl    A    ;42 cycles
  2655.         asl    A
  2656.         sta    ShiftValue2
  2657.         asl    A       
  2658.         sta    ShiftValue3
  2659.         asl    A
  2660.         asl    A
  2661.         asl    A                     
  2662.         sec    
  2663.         sbc    ShiftValue1
  2664.         clc
  2665.         adc    ShiftValue2
  2666.         adc    ShiftValue3
  2667.         rts              
  2668.  
  2669. multi153        sta    ShiftValue1    ;1001 1001
  2670.         asl    A    ;128+16+8+1
  2671.         asl    A    ;40 cycles
  2672.         asl    A
  2673.         sta    ShiftValue2
  2674.         asl    A       
  2675.         sta    ShiftValue3
  2676.         asl    A
  2677.         asl    A
  2678.         asl    A                     
  2679.         clc
  2680.         adc    ShiftValue1
  2681.         adc    ShiftValue2
  2682.         adc    ShiftValue3
  2683.         rts              
  2684.  
  2685. multi155        sta    ShiftValue1    ;1001 1011
  2686.         asl    A    ;128+16+8+3
  2687.         tax
  2688.         asl    A    ;50 cycles
  2689.         asl    A
  2690.         sta    ShiftValue2
  2691.         asl    A       
  2692.         sta    ShiftValue3
  2693.         asl    A
  2694.         asl    A
  2695.         asl    A
  2696.         clc
  2697.         adc    ShiftValue1
  2698.         adc    ShiftValue2
  2699.         adc    ShiftValue3
  2700.         stx    ShiftValue1
  2701.         adc    ShiftValue1
  2702.         rts              
  2703.  
  2704. multi157        sta    ShiftValue1    ;1001 1101
  2705.         asl    A    ;128+16+8+5
  2706.         asl    A    ;50 cycles
  2707.         tax
  2708.         asl    A
  2709.         sta    ShiftValue2
  2710.         asl    A       
  2711.         sta    ShiftValue3
  2712.         asl    A
  2713.         asl    A
  2714.         asl    A
  2715.         clc
  2716.         adc    ShiftValue1
  2717.         adc    ShiftValue2
  2718.         adc    ShiftValue3
  2719.         stx    ShiftValue1
  2720.         adc    ShiftValue1
  2721.         rts              
  2722.                                            
  2723. multi159        sta    ShiftValue1    ;1001 1111
  2724.         asl    A    ;128+32-1
  2725.         asl    A    ;34 cycles
  2726.         asl    A
  2727.         asl    A       
  2728.         asl    A
  2729.         sta    ShiftValue2
  2730.         asl    A                     
  2731.         asl    A                     
  2732.         sec
  2733.         sbc    ShiftValue1
  2734.         clc
  2735.         adc    ShiftValue2
  2736.         rts              
  2737.                                            
  2738. multi161        sta    ShiftValue1    ;1010 0001
  2739.         asl    A    ;128+32+1
  2740.         asl    A    ;32 cycles
  2741.         asl    A
  2742.         asl    A       
  2743.         asl    A
  2744.         sta    ShiftValue2
  2745.         asl    A                     
  2746.         asl    A                     
  2747.         clc
  2748.         adc    ShiftValue1
  2749.         adc    ShiftValue2
  2750.         rts              
  2751.                                            
  2752. multi163        sta    ShiftValue1    ;1010 0011
  2753.         asl    A    ;128+32+3
  2754.         sta    ShiftValue2    ;38 cycles
  2755.         asl    A
  2756.         asl    A
  2757.         asl    A       
  2758.         asl    A
  2759.         sta    ShiftValue3
  2760.         asl    A                     
  2761.         asl    A                     
  2762.         clc
  2763.         adc    ShiftValue1
  2764.         adc    ShiftValue2
  2765.         adc    ShiftValue3
  2766.         rts              
  2767.                                            
  2768. multi165        sta    ShiftValue1    ;1010 0101
  2769.         asl    A    ;128+32+5
  2770.         asl    A
  2771.         sta    ShiftValue2    ;38 cycles
  2772.         asl    A
  2773.         asl    A       
  2774.         asl    A
  2775.         sta    ShiftValue3
  2776.         asl    A                     
  2777.         asl    A                     
  2778.         clc
  2779.         adc    ShiftValue1
  2780.         adc    ShiftValue2
  2781.         adc    ShiftValue3
  2782.         rts              
  2783.                                            
  2784. multi167        sta    ShiftValue1    ;1010 0111
  2785.         asl    A    ;128+32+8-1
  2786.         asl    A    ;40 cycles
  2787.         asl    A
  2788.         sta    ShiftValue2
  2789.         asl    A       
  2790.         asl    A
  2791.         sta    ShiftValue3
  2792.         asl    A                     
  2793.         asl    A                     
  2794.         sec
  2795.         sbc    ShiftValue1
  2796.         clc
  2797.         adc    ShiftValue2
  2798.         adc    ShiftValue3
  2799.         rts              
  2800.                                            
  2801. multi169        sta    ShiftValue1    ;1010 1001
  2802.         asl    A    ;128+32+8+1
  2803.         asl    A    ;38 cycles
  2804.         asl    A
  2805.         sta    ShiftValue2
  2806.         asl    A       
  2807.         asl    A
  2808.         sta    ShiftValue3
  2809.         asl    A                     
  2810.         asl    A                     
  2811.         clc
  2812.         adc    ShiftValue1
  2813.         adc    ShiftValue2
  2814.         adc    ShiftValue3
  2815.         rts              
  2816.                                            
  2817. multi171        sta    ShiftValue1    ;1010 1011
  2818.         asl    A    ;128+32+8+3
  2819.         tax
  2820.         asl    A    ;48 cycles
  2821.         asl    A
  2822.         sta    ShiftValue2
  2823.         asl    A       
  2824.         asl    A
  2825.         sta    ShiftValue3
  2826.         asl    A                     
  2827.         asl    A                     
  2828.         clc
  2829.         adc    ShiftValue1
  2830.         adc    ShiftValue2
  2831.         adc    ShiftValue3
  2832.         stx    ShiftValue1
  2833.         adc    ShiftValue1
  2834.         rts              
  2835.                                            
  2836. multi173        sta    ShiftValue1    ;1010 1101
  2837.         asl    A    ;128+32+8+5
  2838.         asl    A    ;48 cycles
  2839.         tax
  2840.         asl    A
  2841.         sta    ShiftValue2
  2842.         asl    A       
  2843.         asl    A
  2844.         sta    ShiftValue3
  2845.         asl    A                     
  2846.         asl    A                     
  2847.         clc
  2848.         adc    ShiftValue1
  2849.         adc    ShiftValue2
  2850.         adc    ShiftValue3
  2851.         stx    ShiftValue1
  2852.         adc    ShiftValue1
  2853.         rts              
  2854.                                            
  2855. multi175        sta    ShiftValue1    ;1010 1111
  2856.         asl    A    ;128+32+16-1
  2857.         asl    A    ;42 cycles
  2858.         asl    A
  2859.         asl    A       
  2860.         sta    ShiftValue2
  2861.         asl    A
  2862.         sta    ShiftValue3
  2863.         asl    A                     
  2864.         asl    A                     
  2865.         sec
  2866.         sbc    ShiftValue1
  2867.         clc
  2868.         adc    ShiftValue2
  2869.         adc    ShiftValue3
  2870.         rts              
  2871.  
  2872. multi177        sta    ShiftValue1    ;1011 0001
  2873.         asl    A    ;128+32+16+1
  2874.         asl    A    ;40 cycles
  2875.         asl    A
  2876.         asl    A       
  2877.         sta    ShiftValue2
  2878.         asl    A
  2879.         sta    ShiftValue3
  2880.         asl    A                     
  2881.         asl    A                     
  2882.         clc
  2883.         adc    ShiftValue1
  2884.         adc    ShiftValue2
  2885.         adc    ShiftValue3
  2886.         rts              
  2887.  
  2888. multi179        sta    ShiftValue1    ;1011 0011
  2889.         asl    A    ;128+32+16+3
  2890.         tax
  2891.         asl    A    ;50 cycles
  2892.         asl    A
  2893.         asl    A       
  2894.         sta    ShiftValue2
  2895.         asl    A
  2896.         sta    ShiftValue3
  2897.         asl    A                     
  2898.         asl    A                     
  2899.         clc
  2900.         adc    ShiftValue1
  2901.         adc    ShiftValue2
  2902.         adc    ShiftValue3
  2903.         stx    ShiftValue1
  2904.         adc    ShiftValue1
  2905.         rts              
  2906.  
  2907. multi181        sta    ShiftValue1    ;1011 0101
  2908.         asl    A    ;128+32+16+5
  2909.         asl    A    ;50 cycles
  2910.         tax
  2911.         asl    A
  2912.         asl    A       
  2913.         sta    ShiftValue2
  2914.         asl    A
  2915.         sta    ShiftValue3
  2916.         asl    A                     
  2917.         asl    A                     
  2918.         clc
  2919.         adc    ShiftValue1
  2920.         adc    ShiftValue2
  2921.         adc    ShiftValue3
  2922.         stx    ShiftValue1
  2923.         adc    ShiftValue1
  2924.         rts              
  2925.  
  2926. multi183        tax        ;1011 0111
  2927.         asl    A    ;128+32+16+8-1
  2928.         asl    A    ;50 cycles
  2929.         asl    A
  2930.         sta    ShiftValue1
  2931.         asl    A       
  2932.         sta    ShiftValue2
  2933.         asl    A
  2934.         sta    ShiftValue3
  2935.         asl    A                     
  2936.         asl    A                     
  2937.         clc
  2938.         adc    ShiftValue1
  2939.         adc    ShiftValue2
  2940.         adc    ShiftValue3
  2941.         stx    ShiftValue1
  2942.         sec
  2943.         sbc    ShiftValue1
  2944.         rts              
  2945.  
  2946. multi185        tax        ;1011 1001
  2947.         asl    A    ;128+32+16+8+1
  2948.         asl    A    ;50 cycles
  2949.         asl    A
  2950.         sta    ShiftValue1
  2951.         asl    A       
  2952.         sta    ShiftValue2
  2953.         asl    A
  2954.         sta    ShiftValue3
  2955.         asl    A                     
  2956.         asl    A                     
  2957.         clc
  2958.         adc    ShiftValue1
  2959.         adc    ShiftValue2
  2960.         adc    ShiftValue3
  2961.         stx    ShiftValue1
  2962.         adc    ShiftValue1
  2963.         rts              
  2964.  
  2965. multi187        sta    ShiftValue1    ;1011 1011
  2966.         asl    A    ;128+64-4-1
  2967.         asl    A    ;42 cycles
  2968.         sta    ShiftValue2
  2969.         asl    A
  2970.         asl    A
  2971.         asl    A
  2972.         asl    A                     
  2973.         sta    ShiftValue3
  2974.         asl    A                     
  2975.         sec
  2976.         sbc    ShiftValue1
  2977.         clc
  2978.         adc    ShiftValue2
  2979.         adc    ShiftValue3
  2980.         rts              
  2981.                                              
  2982. multi189        sta    ShiftValue1    ;1011 1011
  2983.         asl    A    ;128+64-2-1
  2984.         sta    ShiftValue2
  2985.         asl    A    ;42 cycles
  2986.         asl    A
  2987.         asl    A
  2988.         asl    A
  2989.         asl    A                     
  2990.         sta    ShiftValue3
  2991.         asl    A                     
  2992.         sec
  2993.         sbc    ShiftValue1
  2994.         clc
  2995.         adc    ShiftValue2
  2996.         adc    ShiftValue3
  2997.         rts              
  2998.                                              
  2999. multi191        sta    ShiftValue1    ;1011 1111
  3000.         asl    A    ;128+64-1
  3001.         asl    A    ;34 cycles
  3002.         asl    A
  3003.         asl    A
  3004.         asl    A
  3005.         asl    A                     
  3006.         sta    ShiftValue2
  3007.         asl    A                     
  3008.         sec
  3009.         sbc    ShiftValue1
  3010.         clc
  3011.         adc    ShiftValue2
  3012.         rts              
  3013.                                              
  3014. multi193        sta    ShiftValue1    ;1100 0001
  3015.         asl    A    ;128+64+1
  3016.         asl    A    ;32 cycles
  3017.         asl    A
  3018.         asl    A
  3019.         asl    A
  3020.         asl    A                     
  3021.         sta    ShiftValue2
  3022.         asl    A                     
  3023.         clc
  3024.         adc    ShiftValue1
  3025.         adc    ShiftValue2
  3026.         rts              
  3027.                                              
  3028. multi195        sta    ShiftValue1    ;1100 0011
  3029.         asl    A    ;128+64+3
  3030.         sta    ShiftValue2    ;40 cycles
  3031.         asl    A
  3032.         asl    A
  3033.         asl    A
  3034.         asl    A
  3035.         asl    A                     
  3036.         sta    ShiftValue3
  3037.         asl    A                     
  3038.         clc
  3039.         adc    ShiftValue1
  3040.         adc    ShiftValue2
  3041.         adc    ShiftValue3
  3042.         rts              
  3043.                                              
  3044. multi197        sta    ShiftValue1    ;1100 0101
  3045.         asl    A    ;128+64+5
  3046.         asl    A
  3047.         sta    ShiftValue2    ;40 cycles
  3048.         asl    A
  3049.         asl    A
  3050.         asl    A
  3051.         asl    A                     
  3052.         sta    ShiftValue3
  3053.         asl    A                     
  3054.         clc
  3055.         adc    ShiftValue1
  3056.         adc    ShiftValue2
  3057.         adc    ShiftValue3
  3058.         rts              
  3059.                                              
  3060. multi199        sta    ShiftValue1    ;1100 0111
  3061.         asl    A    ;128+64+8-1
  3062.         asl    A
  3063.         asl    A
  3064.         sta    ShiftValue2    ;42 cycles
  3065.         asl    A
  3066.         asl    A
  3067.         asl    A                     
  3068.         sta    ShiftValue3
  3069.         asl    A                     
  3070.         sec
  3071.         sbc    ShiftValue1
  3072.         clc
  3073.         adc    ShiftValue2
  3074.         adc    ShiftValue3
  3075.         rts              
  3076.                                              
  3077. multi201        sta    ShiftValue1    ;1100 1001
  3078.         asl    A    ;128+64+8+1
  3079.         asl    A
  3080.         asl    A
  3081.         sta    ShiftValue2    ;40 cycles
  3082.         asl    A
  3083.         asl    A
  3084.         asl    A                     
  3085.         sta    ShiftValue3
  3086.         asl    A                     
  3087.         clc
  3088.         adc    ShiftValue1
  3089.         adc    ShiftValue2
  3090.         adc    ShiftValue3
  3091.         rts              
  3092.                                              
  3093. multi203        sta    ShiftValue1    ;1100 1011
  3094.         asl    A    ;128+64+8+3
  3095.         tax
  3096.         asl    A
  3097.         asl    A
  3098.         sta    ShiftValue2    ;50 cycles
  3099.         asl    A
  3100.         asl    A
  3101.         asl    A                     
  3102.         sta    ShiftValue3
  3103.         asl    A                     
  3104.         clc
  3105.         adc    ShiftValue1
  3106.         adc    ShiftValue2
  3107.         adc    ShiftValue3
  3108.         stx    ShiftValue1
  3109.         adc    ShiftValue1
  3110.         rts              
  3111.                                              
  3112. multi205        sta    ShiftValue1    ;1100 1101
  3113.         asl    A    ;128+64+8+3
  3114.         asl    A
  3115.         tax
  3116.         asl    A
  3117.         sta    ShiftValue2    ;50 cycles
  3118.         asl    A
  3119.         asl    A
  3120.         asl    A                     
  3121.         sta    ShiftValue3
  3122.         asl    A                     
  3123.         clc
  3124.         adc    ShiftValue1
  3125.         adc    ShiftValue2
  3126.         adc    ShiftValue3
  3127.         stx    ShiftValue1
  3128.         adc    ShiftValue1
  3129.         rts              
  3130.                                              
  3131. multi207        sta    ShiftValue1    ;1100 1111
  3132.         asl    A    ;128+64+16-1
  3133.         asl    A
  3134.         asl    A
  3135.         asl    A
  3136.         sta    ShiftValue2    ;40 cycles
  3137.         asl    A
  3138.         asl    A                     
  3139.         sta    ShiftValue3
  3140.         asl    A                     
  3141.         sec
  3142.         sbc    ShiftValue1
  3143.         clc
  3144.         adc    ShiftValue2
  3145.         adc    ShiftValue3
  3146.         rts              
  3147.                                              
  3148. multi209        sta    ShiftValue1    ;1101 0001
  3149.         asl    A    ;128+64+16+1
  3150.         asl    A    ;38 cycles
  3151.         asl    A
  3152.         asl    A
  3153.         sta    ShiftValue2
  3154.         asl    A
  3155.         asl    A                     
  3156.         sta    ShiftValue3
  3157.         asl    A                     
  3158.         clc
  3159.         adc    ShiftValue1
  3160.         adc    ShiftValue2
  3161.         adc    ShiftValue3
  3162.         rts              
  3163.                                              
  3164. multi211        sta    ShiftValue1    ;1101 0011
  3165.         asl    A    ;128+64+16+3
  3166.         tax
  3167.         asl    A    ;48 cycles
  3168.         asl    A
  3169.         asl    A
  3170.         sta    ShiftValue2
  3171.         asl    A
  3172.         asl    A                     
  3173.         sta    ShiftValue3
  3174.         asl    A                     
  3175.         clc
  3176.         adc    ShiftValue1
  3177.         adc    ShiftValue2
  3178.         adc    ShiftValue3
  3179.         stx    ShiftValue1
  3180.         adc    ShiftValue1
  3181.         rts              
  3182.                                              
  3183. multi213        sta    ShiftValue1    ;1101 0101
  3184.         asl    A    ;128+64+16+5
  3185.         asl    A    ;48 cycles
  3186.         tax
  3187.         asl    A
  3188.         asl    A
  3189.         sta    ShiftValue2
  3190.         asl    A
  3191.         asl    A                     
  3192.         sta    ShiftValue3
  3193.         asl    A                     
  3194.         clc
  3195.         adc    ShiftValue1
  3196.         adc    ShiftValue2
  3197.         adc    ShiftValue3
  3198.         stx    ShiftValue1
  3199.         adc    ShiftValue1
  3200.         rts              
  3201.                                              
  3202. multi215        tax        ;1101 0111
  3203.         asl    A    ;128+64+16+8-1
  3204.         asl    A    ;52 cycles
  3205.         sta    ShiftValue1
  3206.         asl    A
  3207.         asl    A
  3208.         sta    ShiftValue2
  3209.         asl    A
  3210.         asl    A                     
  3211.         sta    ShiftValue3
  3212.         asl    A                     
  3213.         clc
  3214.         adc    ShiftValue1
  3215.         adc    ShiftValue2
  3216.         adc    ShiftValue3
  3217.         stx    ShiftValue1
  3218.         sec
  3219.         sbc    ShiftValue1
  3220.         rts              
  3221.                                              
  3222. multi217        tax        ;1101 1001
  3223.         asl    A    ;128+64+16+8+1
  3224.         asl    A    ;50 cycles
  3225.         sta    ShiftValue1
  3226.         asl    A
  3227.         asl    A
  3228.         sta    ShiftValue2
  3229.         asl    A
  3230.         asl    A                     
  3231.         sta    ShiftValue3
  3232.         asl    A                     
  3233.         clc
  3234.         adc    ShiftValue1
  3235.         adc    ShiftValue2
  3236.         adc    ShiftValue3
  3237.         stx    ShiftValue1
  3238.         adc    ShiftValue1
  3239.         rts              
  3240.                                              
  3241. multi219        tax        ;1101 1011
  3242.         asl    A    ;128+64+32-4-1
  3243.         asl    A    ;54 cycles
  3244.         sta    ShiftValue1
  3245.         asl    A
  3246.         asl    A
  3247.         asl    A
  3248.         sta    ShiftValue2
  3249.         asl    A                     
  3250.         sta    ShiftValue3
  3251.         asl    A                     
  3252.         clc
  3253.         adc    ShiftValue2
  3254.         adc    ShiftValue3
  3255.         sec
  3256.         sbc    ShiftValue1
  3257.         stx    ShiftValue1
  3258.         sec
  3259.         sbc    ShiftValue1
  3260.         rts              
  3261.                                              
  3262. multi221        tax        ;1101 1101
  3263.         asl    A    ;128+64+32-2-1
  3264.         sta    ShiftValue1
  3265.         asl    A    ;54 cycles
  3266.         asl    A
  3267.         asl    A
  3268.         asl    A
  3269.         sta    ShiftValue2
  3270.         asl    A                     
  3271.         sta    ShiftValue3
  3272.         asl    A                     
  3273.         clc
  3274.         adc    ShiftValue2
  3275.         adc    ShiftValue3
  3276.         sec
  3277.         sbc    ShiftValue1
  3278.         stx    ShiftValue1
  3279.         sec
  3280.         sbc    ShiftValue1
  3281.         rts              
  3282.                                              
  3283. multi223        sta    ShiftValue1    ;1101 1111
  3284.         asl    A    ;128+64+32-1
  3285.         asl    A    ;42 cycles
  3286.         asl    A
  3287.         asl    A
  3288.         asl    A
  3289.         sta    ShiftValue2
  3290.         asl    A                     
  3291.         sta    ShiftValue3
  3292.         asl    A                     
  3293.         sec
  3294.         sbc    ShiftValue1
  3295.         clc
  3296.         adc    ShiftValue2
  3297.         adc    ShiftValue3
  3298.         rts              
  3299.                                              
  3300. multi225        sta    ShiftValue1    ;1110 0001
  3301.         asl    A    ;128+64+32+1
  3302.         asl    A    ;40 cycles
  3303.         asl    A
  3304.         asl    A
  3305.         asl    A
  3306.         sta    ShiftValue2
  3307.         asl    A                     
  3308.         sta    ShiftValue3
  3309.         asl    A                     
  3310.         clc
  3311.         adc    ShiftValue1
  3312.         adc    ShiftValue2
  3313.         adc    ShiftValue3
  3314.         rts              
  3315.                                                     
  3316. multi227        sta    ShiftValue1    ;1110 0011
  3317.         asl    A    ;128+64+32+3
  3318.         tax
  3319.         asl    A    ;50 cycles
  3320.         asl    A
  3321.         asl    A
  3322.         asl    A
  3323.         sta    ShiftValue2
  3324.         asl    A                     
  3325.         sta    ShiftValue3
  3326.         asl    A                     
  3327.         clc
  3328.         adc    ShiftValue1
  3329.         adc    ShiftValue2
  3330.         adc    ShiftValue3
  3331.         stx    ShiftValue1
  3332.         adc    ShiftValue1
  3333.         rts              
  3334.                                                     
  3335. multi229        sta    ShiftValue1    ;1110 0101
  3336.         asl    A    ;128+64+32+3
  3337.         asl    A    ;50 cycles
  3338.         tax
  3339.         asl    A
  3340.         asl    A
  3341.         asl    A
  3342.         sta    ShiftValue2
  3343.         asl    A                     
  3344.         sta    ShiftValue3
  3345.         asl    A                     
  3346.         clc
  3347.         adc    ShiftValue1
  3348.         adc    ShiftValue2
  3349.         adc    ShiftValue3
  3350.         stx    ShiftValue1
  3351.         adc    ShiftValue1
  3352.         rts              
  3353.                                                     
  3354. multi231        tax        ;1110 0111
  3355.         asl    A    ;128+64+32+8-1
  3356.         asl    A    ;52 cycles
  3357.         sta    ShiftValue1
  3358.         asl    A
  3359.         asl    A
  3360.         asl    A
  3361.         sta    ShiftValue2
  3362.         asl    A                     
  3363.         sta    ShiftValue3
  3364.         asl    A                     
  3365.         clc
  3366.         adc    ShiftValue1
  3367.         adc    ShiftValue2
  3368.         adc    ShiftValue3
  3369.         stx    ShiftValue1
  3370.         sec
  3371.         sbc    ShiftValue1
  3372.         rts              
  3373.                                                     
  3374. multi233        tax        ;1110 1001
  3375.         asl    A    ;128+64+32+8+1
  3376.         asl    A    ;50 cycles
  3377.         sta    ShiftValue1
  3378.         asl    A
  3379.         asl    A
  3380.         asl    A
  3381.         sta    ShiftValue2
  3382.         asl    A                     
  3383.         sta    ShiftValue3
  3384.         asl    A                     
  3385.         clc
  3386.         adc    ShiftValue1
  3387.         adc    ShiftValue2
  3388.         adc    ShiftValue3
  3389.         stx    ShiftValue1
  3390.         adc    ShiftValue1
  3391.         rts              
  3392.                                                     
  3393. multi235        sta    ShiftValue1        ;1110 1011
  3394.         asl    A        ;128+128-16-4-1
  3395.         asl    A        ;54 cycles
  3396.         sta    ShiftValue2
  3397.         asl    A
  3398.         asl    A
  3399.         sta    ShiftValue3
  3400.         asl    A
  3401.         asl    A                     
  3402.         asl    A                     
  3403.         tax
  3404.         sec
  3405.         sbc    ShiftValue1
  3406.         sec
  3407.         sbc    ShiftValue2
  3408.         sec
  3409.         sbc    ShiftValue3
  3410.         stx    ShiftValue1
  3411.         adc    ShiftValue1
  3412.         rts              
  3413.                                                     
  3414. multi237        sta    ShiftValue1        ;1110 1101
  3415.         asl    A        ;128+128-16-2-1
  3416.         sta    ShiftValue2
  3417.         asl    A        ;54 cycles
  3418.         asl    A
  3419.         asl    A
  3420.         sta    ShiftValue3
  3421.         asl    A
  3422.         asl    A                     
  3423.         asl    A                     
  3424.         tax
  3425.         sec
  3426.         sbc    ShiftValue1
  3427.         sec
  3428.         sbc    ShiftValue2
  3429.         sec
  3430.         sbc    ShiftValue3
  3431.         stx    ShiftValue1
  3432.         adc    ShiftValue1
  3433.         rts              
  3434.                                                     
  3435. multi239        sta    ShiftValue1        ;1110 1111
  3436.         asl    A        ;128+128+16-1
  3437.         asl    A        ;44 cycles
  3438.         asl    A
  3439.         asl    A
  3440.         sta    ShiftValue2
  3441.         asl    A
  3442.         asl    A                     
  3443.         asl    A                     
  3444.         sta    ShiftValue3
  3445.         sec
  3446.         sbc    ShiftValue1
  3447.         sec
  3448.         sbc    ShiftValue2
  3449.         clc
  3450.         adc    ShiftValue3
  3451.         rts              
  3452.                                                     
  3453. multi241        sta    ShiftValue1        ;1111 0001
  3454.         asl    A        ;128+128-16+1
  3455.         asl    A        ;42 cycles
  3456.         asl    A
  3457.         asl    A
  3458.         sta    ShiftValue2
  3459.         asl    A
  3460.         asl    A                     
  3461.         asl    A                     
  3462.         sta    ShiftValue3
  3463.         sec
  3464.         sbc    ShiftValue2
  3465.         clc
  3466.         adc    ShiftValue1
  3467.         adc    ShiftValue3
  3468.         rts              
  3469.                                                     
  3470. multi243        sta    ShiftValue1        ;1111 0011
  3471.         asl    A        ;128+128-16+3
  3472.         tax
  3473.         asl    A        ;52 cycles
  3474.         asl    A
  3475.         asl    A
  3476.         sta    ShiftValue2
  3477.         asl    A
  3478.         asl    A                     
  3479.         asl    A                     
  3480.         sta    ShiftValue3
  3481.         sec
  3482.         sbc    ShiftValue2
  3483.         clc
  3484.         adc    ShiftValue1
  3485.         adc    ShiftValue3
  3486.         stx    ShiftValue1
  3487.         adc    ShiftValue1
  3488.         rts              
  3489.  
  3490. multi245        sta    ShiftValue1        ;1111 0101
  3491.         asl    A        ;128+128-16+5
  3492.         asl    A        ;52 cycles
  3493.         tax
  3494.         asl    A
  3495.         asl    A
  3496.         sta    ShiftValue2
  3497.         asl    A
  3498.         asl    A                     
  3499.         asl    A                     
  3500.         sta    ShiftValue3
  3501.         sec
  3502.         sbc    ShiftValue2
  3503.         clc
  3504.         adc    ShiftValue1
  3505.         adc    ShiftValue3
  3506.         stx    ShiftValue1
  3507.         adc    ShiftValue1
  3508.         rts              
  3509.                                                     
  3510. multi247        sta    ShiftValue1        ;1111 0111
  3511.         asl    A        ;128+128-8-1
  3512.         asl    A        ;44 cycles
  3513.         asl    A
  3514.         sta    ShiftValue2
  3515.         asl    A
  3516.         asl    A
  3517.         asl    A                     
  3518.         asl    A                     
  3519.         sta    ShiftValue3
  3520.         sec
  3521.         sbc    ShiftValue2
  3522.         sec
  3523.         sbc    ShiftValue1
  3524.         clc
  3525.         adc    ShiftValue3
  3526.         rts              
  3527.                                                     
  3528. multi249        sta    ShiftValue1        ;1111 1001
  3529.         asl    A        ;128+128-8+1
  3530.         asl    A        ;42 cycles
  3531.         asl    A
  3532.         sta    ShiftValue2
  3533.         asl    A
  3534.         asl    A
  3535.         asl    A                     
  3536.         asl    A                     
  3537.         sta    ShiftValue3
  3538.         sec
  3539.         sbc    ShiftValue2
  3540.         clc
  3541.         adc    ShiftValue1
  3542.         adc    ShiftValue3
  3543.         rts              
  3544.                                                     
  3545. multi251        sta    ShiftValue1        ;1111 1011
  3546.         asl    A        ;128+128-4-1
  3547.         asl    A        ;44 cycles
  3548.         sta    ShiftValue2
  3549.         asl    A
  3550.         asl    A
  3551.         asl    A
  3552.         asl    A                     
  3553.         asl    A                     
  3554.         sta    ShiftValue3
  3555.         sec
  3556.         sbc    ShiftValue1
  3557.         sec
  3558.         sbc    ShiftValue2
  3559.         clc
  3560.         adc    ShiftValue3
  3561.         rts              
  3562.                                                     
  3563. multi253        sta    ShiftValue1        ;1111 1101
  3564.         asl    A        ;128+128-2-1
  3565.         sta    ShiftValue2
  3566.         asl    A        ;44 cycles
  3567.         asl    A
  3568.         asl    A
  3569.         asl    A
  3570.         asl    A                     
  3571.         asl    A                     
  3572.         sta    ShiftValue3
  3573.         sec
  3574.         sbc    ShiftValue1
  3575.         sec
  3576.         sbc    ShiftValue2
  3577.         clc
  3578.         adc    ShiftValue3
  3579.         rts              
  3580.                                                     
  3581. multi255        sta    ShiftValue1        ;1111 1101
  3582.         asl    A        ;128+128-1
  3583.         asl    A        ;34 cycles
  3584.         asl    A
  3585.         asl    A
  3586.         asl    A
  3587.         asl    A                     
  3588.         asl    A                     
  3589.         sta    ShiftValue2
  3590.         sec
  3591.         sbc    ShiftValue1
  3592.         clc
  3593.         adc    ShiftValue2
  3594.         rts              
  3595.  
  3596.                END                         
  3597. ***************************************************************
  3598.                                                   
  3599. DivideBy        Start
  3600.  
  3601. * direct page equates for tween routine
  3602.  
  3603. TempX        equ    $00    ;work space for registers X,Y, & A
  3604. TempY        equ    $02
  3605. TempA        equ    $04
  3606. TempA2        equ    $06
  3607. firstframe    equ    $08    ;for direct indirect addressing of
  3608. secondframe    equ    $0c    ; loaded frames and processed frames
  3609. processedframe    equ    $10    ;pointed to processed frame
  3610. tweenpallette    equ    $14    ;Pallette check box info from dialog
  3611. tweenSCRN    equ    $16    ;SCRN check box info from dialog
  3612. TweenNumber    equ    $18    ;number of frames to be created
  3613. SCRNSize        equ    $1a    ;length of SHR info for dex loop
  3614. PalletteSize    equ    $1c    ;length of pallette info for dex loop
  3615. NumberPer1    equ    $1e    ;percentage of first frame in picture
  3616. NumberPer2    equ    $20    ;percentage of 2nd frame in picture
  3617. FilenameLength    equ    $22
  3618. SuffixLength    equ    $24
  3619. NumberAdd1    equ    $26
  3620. NumberAdd2    equ    $28
  3621. NumberResult    equ    $2a
  3622. DblTweenTotal    equ    $30
  3623.  
  3624. ;DO NOT USE TEMPY AS A VARIABLE IN THIS ROUTINE,
  3625. ;THE ROUTINE THAT CALLS THIS ONE USES TEMPY
  3626.  
  3627.         ldx    DblTweenTotal
  3628.         jmp    (DivideByTable,x)
  3629.  
  3630. DivideByTable    anop
  3631.         dc    i2'DivideBy0'
  3632.         dc    i2'DivideBy1'
  3633.         dc    i2'DivideBy2'
  3634.         dc    i2'DivideBy3'
  3635.         dc    i2'DivideBy4'
  3636.         dc    i2'DivideBy5'
  3637.         dc    i2'DivideBy6'
  3638.         dc    i2'DivideBy7'
  3639.         dc    i2'DivideBy8'
  3640.         dc    i2'DivideBy9'
  3641.         dc    i2'DivideBy10'
  3642.         dc    i2'DivideBy11'
  3643.         dc    i2'DivideBy12'
  3644.         dc    i2'DivideBy13'
  3645.         dc    i2'DivideBy14'
  3646.         dc    i2'DivideBy15'
  3647.         dc    i2'DivideBy16'
  3648.         dc    i2'DivideBy17'
  3649.         dc    i2'DivideBy18'
  3650.         dc    i2'DivideBy19'
  3651.         dc    i2'DivideBy20'
  3652.         dc    i2'DivideBy21'
  3653.         dc    i2'DivideBy22'
  3654.         dc    i2'DivideBy23'
  3655.         dc    i2'DivideBy24'
  3656.         dc    i2'DivideBy25'
  3657.         dc    i2'DivideBy26'
  3658.         dc    i2'DivideBy27'
  3659.         dc    i2'DivideBy28'
  3660.         dc    i2'DivideBy29'
  3661.         dc    i2'DivideBy30'
  3662.         dc    i2'DivideBy31'
  3663.         dc    i2'DivideBy32'
  3664.  
  3665. DivideBy0    anop
  3666.         lda    #$ffff
  3667.         rts
  3668. DivideBy1    anop
  3669.         rts
  3670.  
  3671. DivideBy31    anop
  3672.         tax
  3673.         lsr    A
  3674.         lsr    A
  3675.         lsr    A
  3676.         lsr    A
  3677.         lsr    A
  3678.         sta    TempA
  3679.         txa
  3680.         sec
  3681.         sbc    TempA
  3682.         rts
  3683.  
  3684. DivideBy32    anop
  3685.         lsr    A
  3686. DivideBy16    anop
  3687.         lsr    A
  3688. DivideBy8    anop
  3689.         lsr    A
  3690. DivideBy4    anop
  3691.         lsr    A
  3692. DivideBy2    anop
  3693.         lsr    A
  3694.         rts
  3695.  
  3696. DivideBy24    anop
  3697.         lsr    A
  3698. DivideBy12    anop
  3699.         lsr    A
  3700. DivideBy6    anop   
  3701.         lsr    A
  3702. DivideBy3    anop
  3703.         tax
  3704.         lsr    A
  3705.         sta    TempA
  3706.         txa
  3707.         clc
  3708.         adc    TempA
  3709.         lsr    TempA
  3710.         sec
  3711.         sbc    TempA
  3712.         lsr    TempA
  3713.         clc
  3714.         adc    TempA
  3715.         lsr    TempA
  3716.         sec
  3717.         sbc    TempA
  3718.         lsr    TempA
  3719.         clc
  3720.         adc    TempA
  3721.         lsr    A
  3722.         lsr    A
  3723.         rts
  3724.  
  3725. SlowDivide    anop
  3726.         DIV2    TempA,TempA2
  3727.         rts
  3728.                            
  3729. DivideBy20    anop
  3730.         lsr    A
  3731. DivideBy5    anop
  3732.         asl    A
  3733. DivideBy10    anop
  3734.         inc    A
  3735.         tax
  3736.         lsr    A
  3737.         sta    TempA
  3738.         txa
  3739.         sec
  3740.         sbc    TempA    ;1 - 0.5 = 0.5
  3741.         lsr    TempA
  3742.         sec
  3743.         sbc    TempA    ;0.5 - .25 = .25
  3744.         lsr    TempA
  3745.         sec
  3746.         sbc    TempA
  3747.         lsr    TempA
  3748.         clc
  3749.         adc    TempA    ;.25-.0625 = .1875
  3750.         lsr    TempA
  3751.         lsr    TempA
  3752.         clc
  3753.         adc    TempA    ;.1875+.015625
  3754.         lsr    A
  3755.         rts                             
  3756.  
  3757. DivideBy28    anop
  3758.         lsr    A
  3759. DivideBy14    anop
  3760.         lsr    A
  3761. DivideBy7    anop
  3762.         inc    A
  3763.         asl    A
  3764.         sta    TempA
  3765.         lsr    TempA
  3766.         sec
  3767.         sbc    TempA    ;______   .5
  3768.         lsr    TempA
  3769.         sec
  3770.         sbc    TempA    ;______   .25
  3771.         lsr    TempA
  3772.         lsr    TempA  
  3773.         sec
  3774.         sbc    TempA    ;______ 1/4 -1/16 -1/32 -1/128 -1/256
  3775.         lsr    TempA
  3776.         sec
  3777.         sbc    TempA    ;______ - 1/32
  3778.         lsr    TempA
  3779.         lsr    TempA
  3780.         sec
  3781.         sbc    TempA    ;______ - 1/128
  3782.         lsr    TempA
  3783.         sec
  3784.         sbc    TempA    ;______ - 1/256
  3785.         lsr    A
  3786.         rts
  3787.  
  3788. DivideBy9    anop
  3789.         asl    A
  3790. DivideBy18    anop
  3791.         lsr    A
  3792.         lsr    A
  3793.         tax
  3794.         lsr    A
  3795.         sta    TempA
  3796.         txa     
  3797.         sec
  3798.         sbc    TempA
  3799.         lsr    TempA
  3800.         lsr    TempA
  3801.         lsr    TempA
  3802.         lsr    TempA
  3803.         sec
  3804.         sbc    TempA
  3805.         lsr    TempA
  3806.         sec
  3807.         sbc    TempA
  3808.         lsr    A
  3809.         rts
  3810.  
  3811. DivideBy11    anop
  3812.         asl    A
  3813. DivideBy22    anop
  3814.         lsr    A
  3815.         lsr    A
  3816.         tax
  3817.         lsr    A
  3818.         sta    TempA
  3819.         txa     
  3820.         sec
  3821.         sbc    TempA    ;1/8
  3822.         lsr    TempA
  3823.         lsr    TempA
  3824.         sec
  3825.         sbc    TempA    ;-1/32
  3826.         lsr    TempA
  3827.         lsr    TempA
  3828.         lsr    TempA   
  3829.         lsr    TempA
  3830.         sec
  3831.         sbc    TempA    ;-1/512
  3832.         lsr    A   
  3833.         rts
  3834.  
  3835. DivideBy13    anop
  3836.         asl    A
  3837. DivideBy26    anop
  3838.         tax
  3839.         lsr    A
  3840.         sta    TempA
  3841.         txa
  3842.         sec
  3843.         sbc    TempA
  3844.         lsr    TempA
  3845.         clc
  3846.         adc    TempA
  3847.         lsr    TempA
  3848.         sec        
  3849.         sbc    TempA
  3850.         lsr    A
  3851.         lsr    A
  3852.         lsr    A
  3853.         lsr    A
  3854.         rts
  3855.  
  3856. DivideBy30    anop
  3857.         lsr    A
  3858. DivideBy15    anop
  3859.         lsr    A
  3860.         tax
  3861.         lsr    A
  3862.         sta    TempA
  3863.         txa
  3864.         sec
  3865.         sbc    TempA
  3866.         lsr    TempA
  3867.         lsr    TempA
  3868.         sec
  3869.         sbc    TempA
  3870.         lsr    TempA
  3871.         sec
  3872.         sbc    TempA
  3873.         lsr    TempA
  3874.         sec
  3875.         sbc    TempA
  3876.         lsr    TempA
  3877.         sec
  3878.         sbc    TempA
  3879.         lsr    A
  3880.         rts        
  3881.                   
  3882. DivideBy17    anop
  3883.         tax
  3884.         lsr    A
  3885.         lsr    A
  3886.         lsr    A
  3887.         lsr    A
  3888.         sta    TempA
  3889.         txa
  3890.         sec
  3891.         sbc    TempA
  3892.         lsr    A
  3893.         lsr    A
  3894.         lsr    A
  3895.         lsr    A
  3896.         rts
  3897.         
  3898. DivideBy19    anop
  3899.         tax
  3900.         lsr    A
  3901.         lsr    A
  3902.         lsr    A
  3903.         sta    TempA
  3904.         txa
  3905.         sec
  3906.         sbc    TempA
  3907.         lsr    A
  3908.         lsr    A
  3909.         lsr    A
  3910.         lsr    A
  3911.         rts
  3912.         
  3913. DivideBy21    anop
  3914.         jsr    DivideBy7
  3915.         jmp    DivideBy3
  3916.  
  3917. DivideBy23    anop
  3918.         tax
  3919.         lsr    A
  3920.         lsr    A
  3921.         sta    TempA
  3922.         txa
  3923.         sec
  3924.         sbc    TempA
  3925.         lsr    TempA
  3926.         lsr    TempA
  3927.         sec
  3928.         sbc    TempA
  3929.         lsr    TempA
  3930.         lsr    TempA
  3931.         clc
  3932.         adc    TempA
  3933.         lsr    A
  3934.         lsr    A
  3935.         lsr    A
  3936.         lsr    A
  3937.                rts
  3938.     
  3939. DivideBy25    anop
  3940.         jsr    DivideBy5
  3941.         jmp    DivideBy5
  3942.  
  3943. DivideBy27    anop
  3944.         jsr    DivideBy9
  3945.         jmp    DivideBy3
  3946.  
  3947. DivideBy29    anop
  3948.         tax
  3949.         lsr    A
  3950.         lsr    A
  3951.         lsr    A
  3952.         lsr    A
  3953.         lsr    A
  3954.         sta    TempA
  3955.         txa
  3956.         clc
  3957.         adc    TempA
  3958.         jmp    DivideBy28
  3959.  
  3960.         END
  3961.     
  3962.